如何使用“广播周”日历对数据框中的日期时间序列进行分类?

时间:2019-08-07 17:25:49

标签: python pandas

我在数据框中有一个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()。

谢谢!

0 个答案:

没有答案