给定数据帧df
Team Points For Points Against
0 United 36 51
1 City 56 30
2 Liverpool 28 45
3 Chelsea 24 24
...我需要为每一对或每行(0,1),(2,3)交换一列('Points every‘)上的单元格的值。这样:
指数1的loc与指数0的loc互换,
指数3的loc与指数2的loc的'Points‘掉期,以此类推
结果是:
Team Points For Points Against
0 United 36 30
1 City 56 51
2 Liverpool 28 24
3 Chelsea 24 45
...我该如何处理熊猫呢?
发布于 2020-09-09 02:27:49
这是一种可能的方式:
df['Points Against'] = df[['Points Against']].groupby(
(df.index.to_series()/2).astype(int)
).transform(lambda x: x[::-1])另一种方法是上下移动(创建两个新列),并根据索引的奇异性选择其中之一。
您应该做一些测试,看看这些替代方案对内存和/或进程的密集度。
发布于 2020-09-09 02:35:35
我们可以在索引上使用floordivision,然后恢复列,同时按分组。
df["Points Against"] = (
df.groupby(df.index // 2)["Points Against"]
.apply(lambda x: x[::-1])
.reset_index(drop=True)
)
Team Points For Points Against
0 United 36 30
1 City 56 51
2 Liverpool 28 24
3 Chelsea 24 45https://stackoverflow.com/questions/63799522
复制相似问题