Pandas:合并北京快3app集

Tavish Aggarwal.

 

T

他的行业正在处理从各种来源收集的北京快3app块。为了执行北京快3app分析,可以从各种来源收集北京快3app并转换为一个北京快3app集。

 

为此,熊猫使我们的任务非常容易。 PANDAS提供了各种功能,我们可以使用它无缝地合并北京快3app集。

这里,在此帖子合并北京快3app集中,我们将学习如何基于各种条件合并北京快3app集。要合并北京快3app集,我们将使用来自卡格的示例。

我们将进行分析 基于评级的餐馆北京快3app 并会发现哪个餐厅最好。很少有其他北京快3app集我们用于解释概念。请找到它们 Git. .

我也在提供 Python笔记本 跟随你自己的职位和练习。

合并多个北京快3app集

合并北京快3app集有多种方式可供选择。以下是Pandas提供合并北京快3app集的方式:

  1. 附加
  2. 加入
  3. 合并

我们应该非常谨慎,同时选择我们将要使用多个北京快3app集到单个北京快3app集的方式。

让我们从探索每个方法并看到优势。在单独探索每个方法之后,我们将重点关注差异,并将了解何时使用哪种方法。

附加

PANDAS提供可用于合并多个北京快3app集的附加功能。下面演示的示例显示了使用Append方法的语法:

import pandas as pd

englishScoreData = pd.read_csv('merge_concat_join/english_marks.csv', 
                               index_col='Student')
geographyScoreData = pd.read_csv('merge_concat_join/geography_marks.csv', 
                                 index_col='Student')
mathsScoreData = pd.read_csv('merge_concat_join/maths_marks.csv', 
                             index_col='Student')

display(englishScoreData.append(geographyScoreData).append(mathsScoreData))

忽略索引:

display(englishScoreData.append(geographyScoreData, ignore_index=True).
        append(mathsScoreData, ignore_index=True))

像看起来一样简单。我们可以使用Append功能轻松合并两个北京快3app集。如果我们需要合并两个以上的北京快3app集,我们使用一系列附加功能。

PANDAS提供CONCAT功能,并合并多个北京快3app集。我们可以使用哪些方法/类型,我们可以根据下面列出的北京快3app集:

  1. 使用基本耦合功能
  2. 列明级串联
  3. 连接以获取多级行索引
  4. 连接以获得多级列索引

使用基本耦合功能

在谈论Concat函数之前,让我们来看看下面演示的一个例子:

import pandas as pd

englishScoreData = pd.read_csv('merge_concat_join/english_marks.csv', 
                               index_col='Student')
geographyScoreData = pd.read_csv('merge_concat_join/geography_marks.csv', 
                                 index_col='Student')
mathsScoreData = pd.read_csv('merge_concat_join/maths_marks.csv', 
                             index_col='Student')

## Row wise concatination
display(pd.concat([englishScoreData, geographyScoreData], axis= 0).reset_index())

CONCAT函数接受我们需要合并到单个北京快3app集的北京快3app集数组。与Append方法不同,我们可以像我们需要拍照的北京快3app集一样多,我们需要耦合到单个芯片功能。

使用CONCAT函数,我们可以使用“轴”参数来求解我们的北京快3app集行WISE或CLAUND WISE。在上面所示的示例中,我们通过将0传递到“轴”参数时,我们正在连接北京快3app行。

列明级串联

要水平地制作Dataframes堆栈,您必须指定关键字参数轴= 1或Axis ='列'。

import pandas as pd

englishScoreData = pd.read_csv('merge_concat_join/english_marks.csv', 
                               index_col='Student')
geographyScoreData = pd.read_csv('merge_concat_join/geography_marks.csv', 
                                 index_col='Student')
mathsScoreData = pd.read_csv('merge_concat_join/maths_marks.csv', 
                             index_col='Student')

## Row wise concatination
display(pd.concat([englishScoreData, geographyScoreData], axis= 1))

我们早些时候我们学会了如何扼杀北京快3app行。在此示例中,我们通过将轴值提供为1,通过将北京快3app集串联,通过提供为1。

连接到得到 多级 row index

我们可能需要在连接北京快3app集时需要具有两个或更多行级别索引。 CONCAT函数接受“键”作为用于创建多个行级索引的参数。考虑一个示例,如下所示:

import pandas as pd

englishScoreData = pd.read_csv('merge_concat_join/english_marks.csv', 
                               index_col='Student')
geographyScoreData = pd.read_csv('merge_concat_join/geography_marks.csv', 
                                 index_col='Student')

## Multi-level row index
display(pd.concat([englishScoreData, geographyScoreData],keys=[
    'English', 'Geography']))

笔记: 确保键长度与我们连接的北京快3app集数量相同。

在上面显示的一个示例中,我们需要ConcatEnglishh和地理标记北京快3app集,我们还需要两个索引,这将有助于切片北京快3app集。

我已经解释过了 在熊猫索引 。如果你错过了帖子,请检查一下。

如果您正在遵循基于内部索引或外索引的北京快3app集,我们可以如下图所示:

# Get list of selected subjects
display(studentResult.loc[['English', 'Geography']])

## Get all marks of particular student
idx = pd.IndexSlice
display(studentResult.loc[idx[:,'Joy'], :])

笔记:  为pd.indexslice创建一个名为idx的别名。在MultiDIndex的内部级别切片时,需要切片器PD.IndexSlice。

连接以获得多级列索引

我们已经看到了如何耦合北京快3app集并具有多个行级索引。现在让我们看看如何有多个列级索引:

display(pd.concat([englishScoreData, geographyScoreData, mathsScoreData], keys=[
    'English', 'Geography', 'Maths'], axis= 1, join='inner'))

笔记: 内连接选择具有常见索引的行。

要获取多级列索引,除了“键”参数之外,我们需要通过“轴”参数以及Concat功能。

“轴”参数的默认值为0。

这就是我所拥有的追加和求解功能。现在是时候使用Append和Concat函数练习和主合并北京快3app集了。

现在是时候看到何时使用附加和求解功能了?

附加和求解之间的差异

  1. 我们可以使用Append方法垂直合并北京快3app,而是水平合并北京快3app我们需要使用CONCAT方法。
  2. 为了合并两个以上的北京快3app集,我们需要使用一系列附加方法。但是使用芯点方法,我们可以传递一系列北京快3app集。

加入

我们还可以使用Pandas Join方法来合并北京快3app集。请找到下面显示的示例,解释了Join关键字的使用:

import pandas as pd

englishScoreData = pd.read_csv('merge_concat_join/english_marks.csv', 
                               index_col='Student')
geographyScoreData = pd.read_csv('merge_concat_join/geography_marks.csv', 
                                 index_col='Student')

display(geographyScoreData.join(englishScoreData, lsuffix='_geography', rsuffix='_english'))

您可能已经注意到我们正在使用“LSUFFIX”和“RSUFFIX”作为加入功能的参数。如果有两列在两个北京快3app集中有两列,则使用此方法将后缀添加到列标题。

有时我们需要在特定列上加入我们的北京快3app集。在这种情况下,我们可以通过“on”来加入功能。考虑下面显示的示例,解释了特定列上的北京快3app集的连接:

display(userPaymentData.join(userRatingData.set_index('userID'), lsuffix='_userPayment', 
                             rsuffix='_userRating', on='userID', how='inner').dropna())

笔记: 使用加入函数合并北京快3app集的默认值。

合并

合并扩展拍照并为我们提供更多合并北京快3app集的功能。 pd.merge()的默认策略是内连接。下面显示的示例基于指定的列名称合并两个北京快3app集:

userBy_payment_rating_merged = pd.merge(userPaymentData, 
                                                userRatingData, on='userID')
print(userBy_payment_rating_merged.head())

融合 不匹配 column label

考虑我们有两个具有不同列名称但具有相同北京快3app的北京快3app集的场景。我们需要合并列上的北京快3app。

为了解决上述问题,合并函数接受“left_on”和“right_on”作为参数。我们可以从我们需要合并北京快3app集的每个北京快3app集中指定不同的列名称。

userBy_cuisine_payment_rating_merged = pd.merge(userCuisineData, userBy_payment_rating_merged, 
                                                left_on='user_ID', right_on='userID')
userBy_cuisine_payment_rating_merged.sort_values('userID', inplace=True)
userBy_cuisine_payment_rating_merged.drop('userID', axis=1, inplace=True)

top_rated_places_users = userBy_cuisine_payment_rating_merged[
    (userBy_cuisine_payment_rating_merged.rating == 2) &
    (userBy_cuisine_payment_rating_merged.food_rating == 2) & 
    (userBy_cuisine_payment_rating_merged.service_rating == 2)]

print(top_rated_places_users.head())

上面展示的示例在usercuisinedata dataSet和来自userBy_payment_rating _merged北京快3app集中的UserCuisIneData DataSet和UserID列中的北京快3app集。

合并多个列

我们可以在多个列名称上合并北京快3app集。为此,我们可以将数组传递为right_on和left_on或参数上的值。让我们看一下如下所示的一个例子:

# Default merge is inner merge
combined_user_place_data = pd.merge(top_rated_places_users, cuisineData, 
         left_on=['placeID', 'Rcuisine'], right_on=['placeID', 'Rcuisine'])
print(combined_user_place_data.head())
print(combined_user_place_data.info())

合适的加入

合并功能也接受“如何使用哪个参数使用,我们可以指定在合并北京快3app集时需要执行的连接类型。让我们来看看下面显示的一个例子:

# We can even perform outer, left or right merge as well
# Let's perform right merge now
combined_user_place_left_data = pd.merge(top_rated_places_users, cuisineData, 
         left_on=['placeID', 'Rcuisine'], right_on=['placeID', 'Rcuisine'], how='right')
print(combined_user_place_left_data.head())
print(combined_user_place_left_data.info())

笔记: 合并 函数的默认连接是内部连接。

使用而不是left_on和right_on

如果我们知道我们加入的列名称与两个北京快3app集都相同,那么我们可以通过“on”参数而不是传递'left_on'和'right_on'参数。让我们来看看下面显示的一个例子:

# If column names are duplicate we can avoid right_on and left_on
# Instead we can directly use on attribute
combined_user_place_on_data = pd.merge(top_rated_places_users, cuisineData, 
                                       on=['placeID', 'Rcuisine'], how='right')
print(combined_user_place_on_data.head())
print(combined_user_place_on_data.info())

合并订购

在使用Merge_Ordered函数之前,我们必须确保超过两个我们想要合并的北京快3app集是有序北京快3app集。 Merge_Ordered函数也表现得像合并功能一样,但差异是使用Merge_Ordered函数,我们获得有序结果。

combined_user_place_prefix_data = pd.merge_ordered(top_rated_places_users, cuisineData, 
         on=['placeID'],suffixes=['_places','_cuisine'], fill_method='ffill')
print(combined_user_place_prefix_data.tail())
print(combined_user_place_prefix_data.info())

笔记: Merge_Ordered函数的默认连接是外部连接对比的合并功能默认连接,其是内连接。

merge_asof.

类似于pd.merge_ordered(),pd.merge_asof()函数也将在命令中使用on列合并值,但对于左北京快3app帧中的每一行,只有来自右侧北京快3app帧的行,其中'列'值少于将保留左值。考虑下面显示的示例:

top_rated_places_users.is_copy = False
top_rated_places_users.sort_values('placeID', inplace=True)

combined_user_place_prefix_data = pd.merge_asof(top_rated_places_users, cuisineData, 
         on=['placeID'],suffixes=['_places','_cuisine'])
print(combined_user_place_prefix_data.head())
print(combined_user_place_prefix_data.info())

让我们在Pandas提供的附加,求解,加入和合并功能之间的差异结束帖子。

  1. 附录:当我们必须仅垂直合并北京快3app集时,我们使用Append函数
  2. CONCAT:当我们必须垂直和水平合并北京快3app集时,我们使用concat函数。我们还可以在索引上执行内部和外部连接。
  3. 加入:当我们必须执行内部,外部,左右和右连接时,我们使用加入功能。
  4. 合并:它是加入北京快3app集的最提前版本控制。在多列上支持多个连接。

在此帖子中,我们已经掌握了用于将北京快3app合并到单个北京快3app集中的掌握技术。请在下面的评论部分中分享您的帖子的评论。

作者信息

Tavish Aggarwal.

网站: http://tavishaggarwal.com

Tavish Aggarwal. 是一个北京快3app科学家 在一个海德拉巴工作,具有广泛的经验,在跨电子商务,财务,医疗保健等等不同领域解决现实世界的业务问题。 他对技术充满热情,喜欢在团队中工作。