我有两个 Dataframe df1和df2。df1是一个统一的日期范围,另一列中的默认值为0。所以它看起来像:
df1:
date Val
0 2020-02-01 0
1 2020-02-02 0
2 2020-02-03 0
.
.
.
同时,df2只记录发生的事件
df2:
date Val
0 2020-02-01-10:00:00 98
1 2020-02-01-13:54:09 55
2 2020-02-02-11:33:17 32
.
.
.
我想要这个 df1.val[i]
是两个日期之间df2中所有值的总和 df1.date[i] and df1.date[i+1]
.
我编写了以下lambda函数,但它不起作用:
df1['val'] = df1.apply( lambda row: df2[ (df2.date < df1.date[row.index])].sum() )
帮助
3条答案
按热度按时间busg9geu1#
使用
pd.cut
:l0oc07j22#
一些带有解释的代码。我知道有一些更快更容易的方法,但这一种很容易理解。只需将虚拟数据替换为您的数据。
pkbketx93#
我可以推荐duckdb执行以下任务: