熊猫对开始日期之后发生的列中的数据进行汇总

时间:2019-04-08 16:38:01

标签: python pandas date dataframe

我知道我可以手动选择列名并在行中查找总和,但是有没有办法对开始日期或之后的所有值求和?如果该列是start_date或之后的日期,我只想添加到“求和”列。

我有一个熊猫数据框,如下所示:

d = {'start_date': ['01/2015', '01/2015', '02/2015', '03/2015'],'2015-01': [1, 1, 2, 3], '2015-02': [2, 1, 0, 1], '2015-03': [0, 1, 2, 1]}
df = pd.DataFrame(data=d)
df
   start_date   2015-01   2015-02   2015-03
0   01/2015         1        2         0
1   01/2015         1        1         1
2   02/2015         2        0         2
3   03/2015         3        1         1

我想要从行的开始日期到结束从日期的行开始按行求和。例如:

df
   start_date   2015-01   2015-02   2015-03   Sum
0   01/2015         1        2         0       3
1   01/2015         1        1         1       3
2   02/2015         2        0         2       2
3   03/2015         3        1         1       1

1 个答案:

答案 0 :(得分:2)

首先,您需要转换日期格式,然后我们可以使用numpy广播获取条件匹配项,然后执行sum

df.start_date=pd.to_datetime(df.start_date,format='%m/%Y').dt.strftime('%Y-%m')

s=df.start_date.values[:,None]<=df.columns[1:].values
df['Sum']=(df.iloc[:,1:]*s).sum(1)
df
Out[307]: 
  start_date  2015-01  2015-02  2015-03  Sum
0    2015-01        1        2        0    3
1    2015-01        1        1        1    3
2    2015-02        2        0        2    2
3    2015-03        3        1        1    1