假设我们有:
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中,大多数时候都可能将None
和NaN
更改为使用特殊功能,如旧版本的Series.isna
、isnull
。
您的解决方案在测试元素方面有效:
df = df[df['a'].apply(lambda x: x is not None)]