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

时间:2017-04-28 02:46:21

标签: python pandas

我有一个Pandas数据帧,如果索引和列名相同,想要将值更改为NA。有一种优雅的方式来实现这一目标吗?我只能想到应用和功能的繁琐解决方案。

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 |
+---+-----+-----+---+

1 个答案:

答案 0 :(得分:3)

你可以下降到numpy级别:

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

这是有效的,因为我们可以利用广播来创建索引!= column:

的数组
Toast.makeText(getApplicationContext(), folder_size + "", Toast.LENGTH_LONG).show();