Date 如何加入熊猫的日期范围?
我有一个带有日期的表和另一个有每周数据的表。我的周从星期二开始,第二个表的日期应该决定一周(基本上,日期前的星期二是一周的开始;或者该日期是该周的一个示例日) 我如何将日期加入到有关周的信息中 以下是设置:Date 如何加入熊猫的日期范围?,date,pandas,time-series,Date,Pandas,Time Series,我有一个带有日期的表和另一个有每周数据的表。我的周从星期二开始,第二个表的日期应该决定一周(基本上,日期前的星期二是一周的开始;或者该日期是该周的一个示例日) 我如何将日期加入到有关周的信息中 以下是设置: from datetime import datetime as dt import pandas as pd df=pd.DataFrame([dt(2016,2,3), dt(2016,2,8), dt(2016,2,9), dt(2016,2,15)]) df_week=pd.Da
from datetime import datetime as dt
import pandas as pd
df=pd.DataFrame([dt(2016,2,3), dt(2016,2,8), dt(2016,2,9), dt(2016,2,15)])
df_week=pd.DataFrame([(dt(2016,2,4),"a"), (dt(2016,2,11),"b")], columns=["week", "val"])
# note the actual start of the weeks are the Tuesdays: 2.2., 9.2.
# I expect a new column df["val"]=["a", "a", "b", "b"]
我看过熊猫的日期范围,但我看不出从那里该怎么做。你要找的是:
这将在df
中为您提供当天最接近的索引:
df_week.set_index('week', inplace=True)
df_week.index.asof(df['day'][1])
现在可以使用它来选择相应的值:
df_week.loc[df_week.index.asof(df['day'][1])]
最后,将其应用于整个数据帧:
df = pd.DataFrame([dt(2016,2,8), dt(2016,2,9), dt(2016,2,15)], columns=['day'])
df['val'] = df.apply(lambda row: df_week.loc[df_week.index.asof(row['day'])]['val'], axis=1)
我从df
中删除了第一个值,因为我不想处理边缘情况
结果:
day val
0 2016-02-08 a
1 2016-02-09 a
2 2016-02-15 b
那么
DatetimeIndex.asof
是否有效?谢谢。它似乎达到了预期的效果。同时,我使用了纯Python版本,但是asof
将经常有用。请注意,我的一周实际上不是从给定的日期开始,而是在周二。