我有两个数据框。如果分组相同,我喜欢将列中的值添加在一起。只要两个组值都在每个表中,通过简单的加法来完成此操作就非常有效。如果不是,则返回 nan。我假设是因为您无法添加 nan
和 int
,但不确定如何解决此问题。
import pandas as pd
df = pd.DataFrame(data=[['A', 4],
['A', 1],
['B', 1],
['B', 5]],
columns=['Person', 'Days'])
df1 = pd.DataFrame(data=[['A', 5],
['A', 0],
['C', 3],
['C', 5]],
columns=['Person', 'Days'])
df['Days'] = df['Days'] <= 3
df1['Days'] = df1['Days'] <= 3
df = df.groupby('Person').agg(['count'])
df1 = df1.groupby('Person').agg(['count'])
print df + df1
实际输出:
Days
count
Person
A 4
B NaN
C NaN
期望的输出:
Days
count
Person
A 4
B 2
C 2
最佳答案
更新:
In [40]: funcs = ['count','sum']
In [41]: df.groupby('Person').agg(funcs).add(df1.groupby('Person').agg(funcs), fill_value=0)
Out[41]:
Days
count sum
Person
A 4.0 2
B 2.0 1
C 2.0 1
旧答案:
In [14]: df.groupby('Person').size().to_frame('count').add(
....: df1.groupby('Person').size().to_frame('count'), fill_value=0)
Out[14]:
count
Person
A 4.0
B 2.0
C 2.0
PS 我使用原始 DF - 我没有执行此代码:
df = df.groupby('Person').agg(['count'])
df1 = df1.groupby('Person').agg(['count'])
关于python - 添加分组数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517555/