python - 添加分组数据框

标签 python python-2.7 pandas

我有两个数据框。如果分组相同,我喜欢将列中的值添加在一起。只要两个组值都在每个表中,通过简单的加法来完成此操作就非常有效。如果不是,则返回 nan。我假设是因为您无法添加 nanint,但不确定如何解决此问题。

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/

相关文章:

python - Amazon Lambda 是否适合每天并行计算数百份报告?

python - 在 Python 中使用 Re 删除双空格/制表符组合

python - 为 matplotlib 图分配随机颜色

python - 在 Bokeh 中隐藏图例旁边的注释

python - Django中邮箱验证的实现

python - 在不出现 Windows 控制台的情况下运行 Python 脚本

python - 使用 heapq 进行反向字典顺序

python - 在python中以编程方式查找列表中的最大元素

python - 根据其他可用变量有条件地填充缺失值

python - 计算分组 pandas 数据框中的总和