在熊猫DateTimeIndex中,如何获取自索引开始以来每行的星期?

时间:2018-08-21 14:22:29

标签: python pandas datetime

假设我有一个pandas.DataFrame的{​​{1}},频率为1小时:

DateTimeIndex

我想从import pandas as pd import numpy as np idx = pd.date_range('2000-03','2001-03', freq = '1h') df = pd.DataFrame(index = idx, data = np.random.randn(len(idx))) 开始获取每一行的星期。因此,第一行的结果应为零,最后一行的结果应为52(数据包含1年)。一周的开始应该是一周中星期一的第一个索引。 例如,2000-03-01 00:00:00(第一行)的结果应为0,并在星期一开始于2000-03-06 00:00:00时更改为1

熊猫有功能吗?

2 个答案:

答案 0 :(得分:1)

您可以将diffcumsum结合使用,并每隔几秒钟即可从//获得结果。

df.index.to_series().diff().dt.total_seconds().cumsum().fillna(0)//(60*60*24*7)

更新

s=df.index.week.to_series()
s.diff().ne(0).cumsum()-1

答案 1 :(得分:0)

将日期索引显式转换为星期,然后减去第一周的数字idx[0].week,将第一周调整为零,该怎么办?

df = pd.DataFrame(index = idx.week-idx[0].week, data = np.random.randn(len(idx)))

>>> df.head()
          0
0  0.216880
0 -0.766141
0  0.534029
0  0.238623
0  0.148866