我有两个数据帧。如果分组相同,我喜欢添加列中的值。只要两个组值都在每个表中,只需添加一个简单的加法即可。如果不是,则返回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
答案 0 :(得分: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'])