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