python 如何用pandas合并相同数据?

在数据分析中,我们常常需要将不同的数据表中的相同数据进行合并。Pandas提供了简单易用的方法来实现这个功能。本文介绍如何使用Pandas的groupby和aggregate方法合并相同的行数据。

假设我们有两张数据表:

python
df=pd.DataFrame([[AAA,3],[BBB,4],[CCC,5],[AAA,8],[CCC,9]],columns=[item,num])
df1=pd.DataFrame([[AAA,11],[BBB,4],[CCC,14]],columns=[item,num]) 

我们要将df和df1按item列合并,得到的结果为:

   item  num
0  AAA   11 
1  BBB    4
2  CCC   14

## 分组聚合 首先,我们使用`.groupby()`对df和df1进行分组,分组键为item列:

python
df_grouped = df.groupby(item)  
df1_grouped = df1.groupby(item)

然后,使用`.aggregate()`选择num列求和,得到两张分组求和后的DataFrame:

python
df_sum = df_grouped[num].aggregate(np.sum)
df1_sum = df1_grouped[num].aggregate(np.sum)

## 拼接表格 我们重命名df_sum为df,df1_sum为df1_sum,然后使用`pd.concat()`方法按item列拼接:

python
df = df_sum.reset_index()  
df1_sum = df1_sum.reset_index()
result = pd.concat([df, df1_sum], ignore_index=True)  

此时的result表格有重复行,我们使用`.drop_duplicates()`删除重复行,并重命名列名:

python
result = result.drop_duplicates([item])  
result = result.rename(columns={num_x: num, num_y: num})

## 完整代码

python 
df_grouped = df.groupby(item)  
df_sum = df_grouped[num].aggregate(np.sum)
df = df_sum.reset_index()  

df1_grouped = df1.groupby(item)  
df1_sum = df1_grouped[num].aggregate(np.sum)  
df1_sum = df1_sum.reset_index()

result = pd.concat([df, df1_sum], ignore_index=True)  
result = result.drop_duplicates([item])
result = result.rename(columns={num_x: num, num_y: num})

通过上述方法,我们成功实现了使用Pandas合并两个数据表中相同行数据的功能。我们只需要数行代码,便可以轻松处理表格合并的任务。

经验分享 程序员 微信小程序 职场和发展