Python索引过滤器

jmp7cifd  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(157)

我想问关于python索引和 Dataframe

Given DataFrame:
   A    B    C
0  1  NaN    3
1  4    5  NaN
2  7    8    9

如果我们这样做:diabetes_data.isnull()它将:

A      B      C
0  False   True  False
1  False  False   True
2  False  False  False

然而,这是我不明白的一部分,当我们索引到原来的DF。diabetes_data[diabetes_data.isnull()]

A      B      C
0  NaN   NaN    NaN
1  NaN   NaN    NaN
2  NaN   NaN    NaN

我没想到结果会被转换成NaN。请帮助解释逻辑或工作流程。
我所期望的是它将输出NaN(缺失值)的Df.diabetes_data列

x8goxv8g

x8goxv8g1#

所以,问题是“* 为什么我会有这个输出?*".
我们再举一个例子:

A  B  C
0  0  1  2
1  3  4  5
2  6  7  8

并识别偶数:

df.mod(2).eq(0)

       A      B      C
0   True  False   True
1  False   True  False
2   True  False   True

如果我们使用它来索引,这将“选择”偶数/True值,并将其他值显示为NaN

df[df.mod(2).eq(0)]

     A    B    C
0  0.0  NaN  2.0
1  NaN  4.0  NaN
2  6.0  NaN  8.0

这通常是为了执行布尔索引来分配一个值:

df[df.mod(2).eq(0)] = 999
print(df)

     A    B    C
0  999    1  999
1    3  999    5
2  999    7  999

现在,在您的示例中,您“选择”所有NaN值,并将其他值作为NaN“隐藏”,这就是为什么现在所有内容都显示为NaN。
但是,如果指定:

diabetes_data[diabetes_data.isnull()] = 0

print(diabetes_data)

   A    B    C
0  1  0.0  3.0
1  4  5.0  0.0
2  7  8.0  9.0

相关问题