首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于索引交换单元格值

基于索引交换单元格值
EN

Stack Overflow用户
提问于 2020-09-09 02:16:21
回答 2查看 36关注 0票数 2

给定数据帧df

代码语言:javascript
复制
   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‘)上的单元格的值。这样:

指数1loc与指数0loc互换,

指数3loc与指数2loc的'Points‘掉期,以此类推

结果是:

代码语言:javascript
复制
   Team     Points For  Points Against

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

我该如何处理熊猫呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-09 02:27:49

这是一种可能的方式:

代码语言:javascript
复制
df['Points Against'] = df[['Points Against']].groupby(
        (df.index.to_series()/2).astype(int)
).transform(lambda x: x[::-1])

另一种方法是上下移动(创建两个新列),并根据索引的奇异性选择其中之一。

您应该做一些测试,看看这些替代方案对内存和/或进程的密集度。

票数 0
EN

Stack Overflow用户

发布于 2020-09-09 02:35:35

我们可以在索引上使用floordivision,然后恢复列,同时按分组。

代码语言:javascript
复制
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              45
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63799522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档