从Python(pandas)的日期列中获取星期开始日期(星期一)?
我看过很多关于如何使用日期字符串的文章,但是我正在尝试为dataframe列做某事,到目前为止还没有任何运气。我当前的方法是:从“
myday”获取工作日,然后偏移为monday。
df['myday'] is column of dates. mydays = pd.DatetimeIndex(df['myday']).weekday
df['week_start'] = pd.DatetimeIndex(df['myday']) - pd.DateOffset(days=mydays)
但是我得到TypeError:timedelta days组件不支持的类型:numpy.ndarray
如何从df列获取星期开始日期?
回答:
它失败,因为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,这可能会提供更好的解决方案-取决于您要查找的内容。
以上是 从Python(pandas)的日期列中获取星期开始日期(星期一)? 的全部内容, 来源链接: utcz.com/qa/417117.html