gpt4 book ai didi

python - 基于另一个 DataFrame 列值的条件求和

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:51 25 4
gpt4 key购买 nike

我正在尝试对数据框中每一行的所有 value 求和,其中 date1date2 匹配,类似于此 question .

id        value       date1       date2   sum
A 150 4/8/2014 3/8/2014 nan
B 100 5/8/2014 2/8/2014 nan
B 200 7/8/2014 5/8/2014 100
A 200 4/8/2014 3/8/2014 nan
A 300 6/8/2014 4/8/2014 350

我尝试了以下方法,但一直收到'长度必须匹配才能比较' 错误。

grp = df.groupby('id')
df['sum'] = grp.apply(lambda x: x[x['date1'] == df['date2'].values]['value'].sum())

非常感谢任何建议!

最佳答案

您可以 apply功能groupby在哪里使用另一个 applyreplace 0NaN:

print df

# id value date1 date2 sum
#0 A 150 2014-04-08 2014-03-08 NaN
#1 B 100 2014-05-08 2014-02-08 NaN
#2 B 200 2014-07-08 2014-05-08 100
#3 A 200 2014-04-08 2014-03-08 NaN
#4 A 300 2014-06-08 2014-04-08 350


def f(x):
x['sum1'] = x.date2.apply(lambda y: x[x.date1 == y].value.sum()).replace(0, np.nan)
return x

df = df.groupby('id').apply(f)

print df

# id value date1 date2 sum sum1
#0 A 150 2014-04-08 2014-03-08 NaN NaN
#1 B 100 2014-05-08 2014-02-08 NaN NaN
#2 B 200 2014-07-08 2014-05-08 100 100
#3 A 200 2014-04-08 2014-03-08 NaN NaN
#4 A 300 2014-06-08 2014-04-08 350 350

关于python - 基于另一个 DataFrame 列值的条件求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34306920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com