我有一个熊猫数据帧:
索引1 | 第 1 列 | 列2 |
---|---|---|
0 | 12719 | 第 1 行 |
1 | 12719 | 行 2 |
2 | 12719 | 第 3 行 |
3 | 12719 | 第 4 行 |
4 | 20000 | 第 1 行 |
5 | 20000 | 行 2 |
6 | 20000 | 第 3 行 |
7 | 20000 | 第 4 行 |
8 | 20000 | 第5行 |
我想index2
根据 col1 值的出现次数(运行编号)创建一个新列:
索引1 | 索引2 | 第 1 列 | 列2 |
---|---|---|---|
0 | 0 | 12719 | 第 1 行 |
1 | 1 | 12719 | 行 2 |
2 | 2 | 12719 | 第 3 行 |
3 | 3 | 12719 | 第 4 行 |
4 | 0 | 20000 | 第 1 行 |
5 | 1 | 20000 | 行 2 |
6 | 2 | 20000 | 第 3 行 |
7 | 3 | 20000 | 第 4 行 |
8 | 4 | 20000 | 第5行 |
我尝试了不同的正则表达式组合,但不适合我的情况。做了很多SO和谷歌仍然没有找到解决方案。提前致谢!
您可以使用GroupBy.cumcount()
生成第二个索引的值,并通过.set_index()
参数将其设置为第二个索引append=True
。
df['index2'] = df.groupby('col1').cumcount()
df = df.set_index('index2', append=True)
结果:
print(df)
col1 col2
index2
0 0 12719 row1
1 1 12719 row2
2 2 12719 row3
3 3 12719 row4
4 0 20000 row1
5 1 20000 row2
6 2 20000 row3
7 3 20000 row4
8 4 20000 row5
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句