我在数据框中有一个datetime列,并想根据广播日历用相应的星期数填充另一列。广播日历与常规日历之间的间隔是几周,这与常规日历略有不同,我将其放在另一个数据框中,该数据框中包含以下列:from_date,to_date,范围(类型pd.date_range),week_number。
我用isin()
函数尝试了numpy.where函数,但是出现类型错误。我还尝试了遍历并应用lambda来检查日期是否落在广播日历的每个范围之间而无济于事。
df['WEEK'] = np.where(df['DATE_TIME'].isin(broadcast_calendar['date_range']))
我收到此错误:
TypeError:类'pandas.core.indexes.datetimes.DatetimeIndex'无法转换为日期时间
示例数据帧:
broadcast_calendar = pd.DataFrame({
'range': ['01/07-01/13', '01/14-01/20', '01/21-01/27', '01/28-02/03'],
'week': [2, 3, 4, 5]
})
df = pd.DataFrame({'name': ['foo', 'bar'], 'date': ['01/16', '02/01']})
我希望项目'foo'的列显示它属于广播日历的第3周,而bar应该属于第5周。
我也尝试过:
df['week'] = df['date'].apply(lambda x: np.where(x > broadcast_calendar.from_date and x < pd.to_date))
但是我得到这个错误:
ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
谢谢!