我有两个数据帧,master_source
和main_df
。我想将start_date
和end_date
从main_df
添加到master_source
,因为这最终将允许我在两个数据帧上设置匹配的索引以进行合并。你知道吗
我的初始逻辑是检查1)两个数据帧中的market
是否匹配,2)在master_source
中的viewed_date
是否在start_date
和end_date
之间。如果所有条件都符合,我想将start_date
和end_date
添加到master_source
。你知道吗
请注意,viewed_date
、start_date
和end_date
都已转换为datetime对象。你知道吗
以下是每个数据帧的输入示例:
master_source
viewed_date market
2019-04-15 Abilene, TX
2019-04-11 Yuma, AZ
2019-04-19 Abilene, TX
main_df
market start_date end_date
Abilene, TX 2019-04-11 2019-04-17
Yuma, AZ 2019-04-11 2019-04-17
Abilene, TX 2019-04-18 2019-04-26
我的代码:
def add_dates(row):
matches = main_df[
(main_df['market'] == row['market']) &
(row['viewed_date'].between(main_df['start_date'], main_df['end_date']))]
start = matches['start_date'].values[0] if len(matches) > 0 else None
end = matches['end_date'].values[0] if len(matches) > 0 else None
row.loc['start_end', 'end_date'] = start, end
return row
master_source = master_source.apply(add_dates, axis=1)
到目前为止,我已知的问题是错误AttributeError: ("'Timestamp' object has no attribute 'between'", 'occurred at index 0')
,我觉得我没有正确地添加两个新列,而不是只添加一个新列。你知道吗
开始工作和结束工作分别进行:
结束日期也一样。你知道吗
收益率:
相关问题 更多 >
编程相关推荐