替换 Pandas 数据框中的值

Replacing values in a Pandas Dataframe

我有一个数据框(名为 df)如下:

    s01  s03  s06  s07  s08
0   1    1    1    1    1
1   1    1    1    1    1
2   0    1    1    0    1
3   0    0    1    1    0
4   0    0    0    1    1

我想用它的索引值替换所有的。

最终结果应该是这样的:

    s01  s03  s06  s07  s08
0   0    0    0    0    0
1   1    1    1    1    1
2   0    2    2    0    2
3   0    0    3    3    0
4   0    0    0    4    4

这只是一个示例。真实的数据框有数千行和数千列。 优先考虑的是有一个高效的代码来尽快修改数据。

我想到了 3 种可能的方法来解决这个问题:

哪种方式最省时?

有没有其他更高效的方法我还没想到?

谢谢

你可以用 mask:

df.mask(df.eq(1), df.index)

输出:

   s01  s03  s06  s07  s08
0    0    0    0    0    0
1    1    1    1    1    1
2    0    2    2    0    2
3    0    0    3    3    0
4    0    0    0    4    4

如果您的索引像本示例中那样是数字的,您还可以:

df.mul(df.index, axis=0)