假设我有一个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
熊猫有功能吗?
答案 0 :(得分:1)
您可以将diff
与cumsum
结合使用,并每隔几秒钟即可从//
获得结果。
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