从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

回到顶部