Pandas Dataframe:新列参考周从星期一开始

时间:2018-04-10 17:13:49

标签: python-3.x pandas dataframe

将此函数写入引用和现有date列以创建名为wbm的新列(week beginning monday的缩写)。

def wbmFunc(df, col):
    if df[col].weekday() == 0:
        return df[col]
    else:
        return df[col] + timedelta(days=(0 - df[col].weekday()))

df['wbm'] = wbmFunc(df, 'date')

为什么会返回以下错误?

AttributeError: 'Series' object has no attribute 'weekday'

2 个答案:

答案 0 :(得分:1)

由于您要访问类似日期的属性,您必须使用:

series.dt.weekday

另请注意,由于它是属性,因此您不会在该系列上调用函数。

您可以参考此主题的pandas Documentation

答案 1 :(得分:0)

看起来您想构建一个新列,该列在给定日期的星期一开始。我认为要实现这一点,即使你修复了属性bug,仍然存在一些问题。为什么不使用pd.offsets?您可以为同一目的尝试以下代码

def wbmFunc(df, col):
    w_mon = pd.offsets.Week(weekday=0)
    return df[col].apply(w_mon.rollback)