通过以键[a,b,c]作为索引连接多个数据帧来构造一个数据帧
+-------+----------+----------+
| Index | IndexPos | SomeData |
+-------+----------+----------+
| a | 1 | some1 |
| | 2 | some2 |
| | 3 | some3 |
| b | 1 | some1 |
| | 2 | some2 |
| | 3 | some3 |
| c | 1 | some1 |
| | 2 | some2 |
| | 3 | some3 |
+-------+----------+----------+
现在我们要将其切成最后两个元素,如:
df.groupby(df.index.levels[0].name).tail(2)
在此之后,我想重新计算InExpos中的剩余元素,以获得以下结果:
+-------+----------+----------+
| Index | IndexPos | SomeData |
+-------+----------+----------+
| a | 1 | some2 |
| | 2 | some3 |
| b | 1 | some2 |
| | 2 | some3 |
| c | 1 | some2 |
| | 2 | some3 |
+-------+----------+----------+
有没有办法做到这一点,或者我必须在连接之前对其进行切片
首先
groupby
在level=0
上,使用tail
获取每个组的最后两行,然后在切片数据帧上使用groupby
+cumcount
为每个组创建一个顺序计数器,并将其设置为level=1
处的新索引:或者使用
factorize
代替受@anky解决方案启发的groupby
+cumcount
:结果:
相关问题 更多 >
编程相关推荐