在Python中,Pandas.如何通过WOM-“每月一周”对数据帧进行子集化?

我希望能够按月的一周对df进行子集化,类似于您对星期几或一个月中的某天所做的操作.

sample = df[df.index.month == 12] 

那么有什么办法可以做到这一点?

sample = df[df.index.WOM == 1]

我知道,如果我在上面键入这行,则会得到AttributeError:’Index’对象没有属性’WOM’,仅供参考以了解我想要做什么.

谢谢

解决方法:

您可以查看.weekofyear的值,并在月初查看相同的值,这两个值之差应为一个月中的星期.例如:

>>> days = ['2014-02-01', '2014-06-10', '2014-08-30', '2014-11-22']
>>> idx = pd.to_datetime(days)
>>> idx.weekofyear
array([ 5, 24, 35, 47], dtype=int32)

对于月份的开始,您可以从索引本身中减去.day:

>>> mon = idx - pd.to_timedelta(idx.day - 1, unit='D')
>>> mon.weekofyear
array([ 5, 22, 31, 44], dtype=int32)

而一个月中的第几周是:

>>> 1 + idx.weekofyear - mon.weekofyear
array([1, 3, 5, 4], dtype=int32)
上一篇:使用Java在mongodb中使用多个字段创建索引


下一篇:为什么魔术方法没有被python中的__getattr__实现拦截?