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合并两个数据表中相同行数据的功能。我们只需要数行代码,便可以轻松处理表格合并的任务。

猜你喜欢

转载自blog.csdn.net/devid008/article/details/131409394
今日推荐