假设我有两个pandas,它们分别为df1和df2:
import pandas as pd
df1 = pd.DataFrame({'Name': ['A', 'B', 'C'],
'Date1':['2023-01-01', '2023-01-02', '2023-01-03'],
'Date2':['2023-01-03', '2023-01-04', '2023-01-05']})
df1.loc[:, ['Date1', 'Date2']] = df1.loc[:, ['Date1', 'Date2']].apply(pd.to_datetime, errors='coerce')
df2 = pd.DataFrame({'Date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05'],
'A': [1, 2, 3, 4, 5], 'B': [6, 7, 8, 9, 10], 'C': [11,12,13,14,15]})
df2['Date'] = pd.to_datetime(df2['Date'])
是否有一种有效的方法来向df1中添加一个名为“Sum”的列,该列将计算df2中位于df1中引用的Date1和Date2之间的name数据的总和(不包括Date1,包括Date2)。
期望的结果应该是:
df_result = pd.DataFrame({'Name': ['A', 'B', 'C'],
'Date1':['2023-01-01', '2023-01-02', '2023-01-03'],
'Date2':['2023-01-03', '2023-01-04', '2023-01-05'],
'Sum': [2+3, 8+9, 14+15]})
2条答案
按热度按时间t9aqgxwy1#
分步解决
熔化框架df2
用
df1
合并熔化的三角形框架。然后屏蔽df2中Date
超出边界的值用sum将数组和聚合值分组
pzfprimi2#
我认为最简单的方法是使用
apply
,它根据您的条件进行过滤并总结:输出量: