合并数据框 Python

Merging DataFrames Python

我有 3 个数据集,每个数据集有 3 列和 1000 多行。数据是关于 2 种症状组合的计数。例如,计数为 2 的疼痛和发烧。我想要一个输出,其中这些 DataFrame 的组合方式是汇总来自不同 DataFrame 的常见症状的计数,并且不常见的组合按原样连接。我附上了一个示例 DataFrame 和我想要的结果。帮助将不胜感激。

#Sample
a = pd.DataFrame({'a':['pain','fever','Headache'],'b':['Cancer','HIV','Piles'],'count':[2,4,5]})
b = pd.DataFrame({'a':['pain','Pyrexia','Headache'],'b':['Cancer','HIV','Piles'],'count':[1,5,7]})
c = pd.DataFrame({'a':['pain','fever','Cancer'],'b':['Cancer','HIV','Piles'],'count':[2,4,5]})

这是我想要的合并后的结果:

#Result
result = pd.DataFrame({'a':['pain','fever','Headache','Pyrexia','Cancer'],\
                       'b':['Cancer','HIV','Piles','HIV','Piles'],'count':[5,8,12,5,5]})
result

    a          b    count
0   pain    Cancer      5
1   fever   HIV         8
2   Headache Piles     12
3   Pyrexia HIV         5
4   Cancer  Piles       5

垂直(按行)连接它们,然后用总和对它们进行分组。

pd.concat([a,b,c]).groupby(['a','b']).sum()

count
a           b   
Cancer      Piles   5
Headache    Piles   12
Pyrexia     HIV     5
fever       HIV     8
pain        Cancer  5

这可以通过使用

来实现
pd.concat([a, b, c]).groupby(['a', 'b']).sum().reset_index()

其中 pd.concat concatenates your dataframes, groupby finds all unique combinations of your a and b columns, sum sums the third column per each of the combinations and reset_index 将索引重置为默认的数字索引,将列放回数据框中