它失败,因为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['daysoffset']), axis=1)
我没有实际测试过此代码(没有示例数据),但这应该可以满足您的描述。
但是,您可能希望查看pandas.Resample,这可能会提供更好的解决方案-取决于您要查找的内容。