【发布时间】:2021-04-26 20:02:39
【问题描述】:
我有一个包含关键 ID、状态、开始日期和其他特征的大型数据框。我有另一个数据框,其中包含状态、开始日期和表示标志的“1”。
我想加入两者,基于状态和 df1 中的日期大于或等于 df2 中的日期。
以下面的例子为例。 df1 是状态表、开始日期和 1 表示标志。 df2 是一个需要这些标志的数据框 if df2 中的日期是 >= df1 中的日期。最终结果是df3。唯一观察得到状态匹配且日期为 >= 原始日期的标志。
import pandas as pd
dict1 = {'date':['2020-01-01', '2020-02-15', '2020-02-04','2020-03-17',
'2020-06-15'],
'state':['AL','FL','MD','NC','SC'],
'flag': [1,1,1,1,1]}
df1 = pd.DataFrame(dict1)
df1['date'] = pd.to_datetime(df1['date'])
dict2 = {'state': ['AL','FL','MD','NC','SC'],
'keyid': ['001','002','003','004','005'],
'start_date':['2020-02-01', '2020-01-15', '2020-01-30','2020-05-18',
'2020-05-16']}
df2 = pd.DataFrame(dict2)
df2['start_date'] = pd.to_datetime(df2['start_date'])
df3 = df2
df3['flag'] = [0,1,1,0,1]
如何以编程方式访问 df3?我实际的df1 每个州都有一行。我实际的df2 有超过一百万个不同日期的观察结果。
【问题讨论】: