Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何加入熊猫的日期范围?_Date_Pandas_Time Series - Fatal编程技术网

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
将经常有用。请注意,我的一周实际上不是从给定的日期开始,而是在周二。