为什么这个无过滤不适用于熊猫?



假设我们有:

import pandas as pd
df = pd.DataFrame([[1, 2], [4, None], [None, 7]], dtype=object, columns=['a', 'b'])
print(df['a'])
# 0       1
# 1       4
# 2    None

我读过Python Pandas Dataframe,删除了所有';无';是任意列中的值和Pandas-Filtering None Values,我知道None删除行的解决方案是用df[~df['a'].isnull()]过滤数据帧,因为我们有:

df['a'].isnull()
# 0    False
# 1    False
# 2     True

问题:为什么这两个看起来像蟒蛇的解决方案不失败

df[df['a'] != None]  # fails: filters nothing
df[df['a'] is not None]  # fails too

我认为,因为在Panda中,大多数时候都可能将NoneNaN更改为使用特殊功能,如旧版本的Series.isnaisnull

您的解决方案在测试元素方面有效:

df = df[df['a'].apply(lambda x: x is not None)]

最新更新