首页 > 解决方案 > 根据索引交换单元格值

问题描述

给定数据框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 Against') 上的单元格值......这样:

指数处的“反对点”与loc指数处的1“反对点”互换,loc0

指数处的“反对点”与loc指数处的3“反对点”互换,依此类推,loc2

结束于:

   Team     Points For  Points Against

0  United      36      30
1  City        56      51
2  Liverpool   28      24
3  Chelsea     24      45
...

我如何用熊猫做到这一点?

标签: pythonpandas

解决方案


这是一种可能的方式:

df['Points Against'] = df[['Points Against']].groupby(
        (df.index.to_series()/2).astype(int)
).transform(lambda x: x[::-1])

另一个可能是上下移动(创建两个新列)并根据索引的奇数选择一个或另一个。

您应该对内存和/或进程密集型如何成为这些替代方案进行一些测试。


推荐阅读