【发布时间】:2016-03-22 06:55:00
【问题描述】:
我正在尝试对所有value 求和,其中date1 与我的数据框中每一行的date2 匹配,这与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
我尝试了以下方法,但不断收到 'Lengths must match to compare' 错误。
grp = df.groupby('id')
df['sum'] = grp.apply(lambda x: x[x['date1'] == df['date2'].values]['value'].sum())
不胜感激任何建议!
【问题讨论】:
-
问题在于:
x['date1'] == df['date2'],系列有不同的长度。 -
IIUC 没有给你想要的东西:
df1 = df.set_index('id') df1.loc[df1['date1'].isin(df1['date2']),'value'].sum(level=0)?
标签: python pandas sum conditional dataframe