合并数据框 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
将索引重置为默认的数字索引,将列放回数据框中
我有 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
将索引重置为默认的数字索引,将列放回数据框中