【问题标题】:How to sum list of pandas dataframes by with respect to given column如何对给定列求和熊猫数据框列表
【发布时间】:2021-01-03 14:45:45
【问题描述】:
我有包含两列的熊猫数据框列表,基本上是类和值:
df1:
| Name |
Count |
| Bob |
10 |
| John |
20 |
df2:
| Name |
Count |
| Mike |
30 |
| Bob |
40 |
不同的数据帧中可能有相同的“名称”,可能没有相同的“名称”,并且列表包含超过 100 个数据帧。但在每个数据框中,所有“名称”都是唯一的。
我需要的是遍历所有数据帧并创建一个大数据帧,其中显示来自“名称”的所有值及其来自所有数据帧的“计数”总和,例如:
结果:
| Name |
Count |
| Bob |
50 |
| John |
20 |
| Mike |
30 |
Bob 的数据是求和的,其他的则不是,因为它们只出现一次。一旦有很多数据框,有没有有效的方法?
【问题讨论】:
标签:
python
pandas
dataframe
【解决方案1】:
pd.concat 然后groupby:
df = pd.concat(dfs) # where dfs is a list of dataframes
那你就可以了
gp = df.groupby(['Name'])['Count'].sum()
【解决方案2】:
您可以执行以下操作(假设您有更多仅包含在一个数据框中的数据,使用fill_value=0 仍然提供价值..:
df1.set_index('Name').add(df2.set_index('Name'), fill_value=0).reset_index()
>>> Name Count
0 Bob 50.0
1 John 20.0
2 Mike 30.0