pandas 仅对 Dataframe 中由ANOTHER COLUMN筛选的列的某些值执行操作[已关闭]

x33g5p2x  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(119)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
截至4天前,机构群体正在审查是否重新讨论此问题。
Improve this question
给定如下 Dataframe :

df = pd.DataFrame([[11, 1, 1, 1, 1], [12, 2, 2, 2, 2], [12, 3, 3, 3, 3], [14, 4, 4, 4, 4]], columns=['a', 'b', 'c', 'd', 'e'])

    a   b   c   d   e
0   11  1   1   1   1
1   12  2   2   2   2
2   12  3   3   3   3
3   14  4   4   4   4

我想将列'd'中的值与列a中包含value == 12的行进行交换。
最终输出应如下所示:

a   b   c   d  e
0   11  1   1   1  1
1   12  2   2   3  2
2   12  3   3   2  3
3   14  4   4   4  4

我如何才能做到这一点?
我试过这些:

df[df["a"] == 12]['d'] = df[df["a"] == 12]['d'].map({2: 3, 3: 2})

df.loc[df.a == 12]["d"].replace({2: 3, 3: 2}, inplace=True)

但是这些并不修改原始 Dataframe ,尽管我们可以在序列df[df["a"] == 12]['d'].map({2: 3, 3: 2})中看到变化。

30byixjq

30byixjq1#

如果你使用loc,那么它会改变原来的代码,如下所示。

>>> df.loc[1, 'd'] = 3
>>> df
   a  b  c  d
0  1  1  1  1
1  2  2  2  3
2  3  3  3  3
3  4  4  4  4

相关问题