python - Pandas:如果索引和列相同,则将值更改为 NA

标签 python pandas

我有一个 Pandas 数据框,如果索引和列名称相同,希望将值更改为 NA。有没有一种优雅的方法来实现这一目标?我只能想到一个带有 apply 和 function 的繁琐解决方案。

import pandas as pd
df = pd.DataFrame({'a': [1, 1], 'b': [1, 1], 'c': [1, 1]})
df.index = ['a', 'b']
df
+---+---+---+---+
|   | a | b | c |
+---+---+---+---+
| a | 1 | 1 | 1 |
| b | 1 | 1 | 1 |
+---+---+---+---+

+---+-----+-----+---+
|   | a   | b   | c |
+---+-----+-----+---+
| a |None | 1   | 1 |
| b | 1   |None | 1 |
+---+-----+-----+---+

最佳答案

你可以下降到 numpy 级别:

In [32]: df.where(df.index.values[:,None] != df.columns.values)
Out[32]: 
     a    b  c
a  NaN  1.0  1
b  1.0  NaN  1

这是有效的,因为我们可以利用广播来创建一个数组,其中索引!=列:

In [33]: df.index.values[:,None] != df.columns.values
Out[33]: 
array([[False,  True,  True],
       [ True, False,  True]], dtype=bool)

关于python - Pandas:如果索引和列相同,则将值更改为 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43671124/

相关文章:

Python Hash MD5 不等于 SQL Server

Python 系列和重采样

python - 对 pandas 系列中的多索引级别求和

python - 如何在 Pandas 中进行条件累积移位功能?

python - Pandas,反向一个热编码

python - PyQt5 从另一个模块发出信号

python - 如何合并两个 GPy 模型的图?

python - 如何在 Python 中拆分大文件 csv 文件(7GB)

python - 使用 pandas groupby 计算值

python - 数据框的 Pandas 合并