Python 为数据帧中的每4行分配一个编号id
我有这样一个熊猫数据框:Python 为数据帧中的每4行分配一个编号id,python,pandas,Python,Pandas,我有这样一个熊猫数据框: pd.DataFrame({'week': ['2019-w01', '2019-w02','2019-w03','2019-w04', '2019-w05','2019-w06','2019-w07','2019-w08', '2019-w9','2019-w10','2019-w11','2019-w12'], 'value': [11,
pd.DataFrame({'week': ['2019-w01', '2019-w02','2019-w03','2019-w04',
'2019-w05','2019-w06','2019-w07','2019-w08',
'2019-w9','2019-w10','2019-w11','2019-w12'],
'value': [11,22,33,34,57,88,2,9,10,1,76,14],
'period': [1,1,1,1,2,2,2,2,3,3,3,3]})
week value
0 2019-w1 11
1 2019-w2 22
2 2019-w3 33
3 2019-w4 34
4 2019-w5 57
5 2019-w6 88
6 2019-w7 2
7 2019-w8 9
8 2019-w9 10
9 2019-w10 1
10 2019-w11 76
11 2019-w12 14
我需要的是如下所示。我想每隔4周分配一个时段ID
week value period
0 2019-w01 11 1
1 2019-w02 22 1
2 2019-w03 33 1
3 2019-w04 34 1
4 2019-w05 57 2
5 2019-w06 88 2
6 2019-w07 2 2
7 2019-w08 9 2
8 2019-w9 10 3
9 2019-w10 1 3
10 2019-w11 76 3
11 2019-w12 14 3
实现这一目标的最佳方式是什么?谢谢 试试:
df['period']=(pd.to_numeric(df['week'].str.split('-').str[-1]
.str.replace('w',''))//4).shift(fill_value=0).add(1)
print(df)
数据帧可以有超过12行,还是只针对这个特定的数据帧?如果您可以确保没有丢失的周数,那么就只需
df.index//4
。否则,它会变得更复杂,而且很可能使用DateTimes是最简单的。我喜欢您的解决方案。如果你把它作为答案,我会接受的。
week value period
0 2019-w01 11 1
1 2019-w02 22 1
2 2019-w03 33 1
3 2019-w04 34 1
4 2019-w05 57 2
5 2019-w06 88 2
6 2019-w07 2 2
7 2019-w08 9 2
8 2019-w9 10 3
9 2019-w10 1 3
10 2019-w11 76 3
11 2019-w12 14 3