它失败了,因为pd.DateOffset需要一个整数作为参数(并且你正在为它提供一个数组).您只能使用DateOffset将日期列更改为相同的偏移量.
试试这个 :
import datetime as dt
# Change 'myday' to contains dates as datetime objects
df['myday'] = pd.to_datetime(df['myday'])
# 'daysoffset' will container the weekday, as integers
df['daysoffset'] = df['myday'].apply(lambda x: x.weekday())
# We apply, row by row (axis=1) a timedelta operation
df['week_start'] = df.apply(lambda x: x['myday'] - dt.TimeDelta(days=x['mydays']), axis=1)
我实际上没有测试过这段代码,(没有样本数据),但这应该适用于你所描述的内容.
但是,您可能需要查看pandas.Resample,这可能会提供更好的解决方案 – 具体取决于您要查找的内容.