使用 isna() 过滤数据框以过滤以下列中具有空值的我们的行
filter dataframe using isna() to filter ourt rows that have null value in following columns
我有与此类似的数据框:
id name val1_rain val2_tik val3_bon val4_tig ...
0 2349 Rivi 0.11 0.34 0.78 0.21
1 3397 Mani NaN NaN NaN NaN
2 0835 Pigi 0.34 NaN 0.32 NaN
3 5093 Tari 0.65 0.12 0.34 2.45
4 2340 Yoti NaN NaN NaN NaN
我想删除名称列 ([:,2:]) 之后所有列的所有空值的任何行。
所以结果输出看起来像这样:
id name val1_rain val2_tik val3_bon val4_tig ...
0 2349 Rivi 0.11 0.34 0.78 0.21
2 0835 Pigi 0.34 NaN 0.32 NaN
3 5093 Tari 0.65 0.12 0.34 2.45
我试过这样做:
df[~df.iloc[:,2:].isnull()]
但这引发了一个错误:
ValueError: cannot reindex from a duplicate axis
首先,我不确定为什么错误会提到重复轴。
然后,我想找到一种方法,我可以只拥有在第 2 列之后的任何列中具有任何值的行。
我还没有找到类似的问题。
如果第二列后至少存在一个非缺失值,您可以使用 DataFrame.notna
and DataFrame.any
:
进行过滤
df = df[df.iloc[:,2:].notna().any(axis=1)]
print (df)
id name val1_rain val2_tik val3_bon val4_tig
0 2349 Rivi 0.11 0.34 0.78 0.21
2 835 Pigi 0.34 NaN 0.32 NaN
3 5093 Tari 0.65 0.12 0.34 2.45
我有与此类似的数据框:
id name val1_rain val2_tik val3_bon val4_tig ...
0 2349 Rivi 0.11 0.34 0.78 0.21
1 3397 Mani NaN NaN NaN NaN
2 0835 Pigi 0.34 NaN 0.32 NaN
3 5093 Tari 0.65 0.12 0.34 2.45
4 2340 Yoti NaN NaN NaN NaN
我想删除名称列 ([:,2:]) 之后所有列的所有空值的任何行。 所以结果输出看起来像这样:
id name val1_rain val2_tik val3_bon val4_tig ...
0 2349 Rivi 0.11 0.34 0.78 0.21
2 0835 Pigi 0.34 NaN 0.32 NaN
3 5093 Tari 0.65 0.12 0.34 2.45
我试过这样做:
df[~df.iloc[:,2:].isnull()]
但这引发了一个错误:
ValueError: cannot reindex from a duplicate axis
首先,我不确定为什么错误会提到重复轴。
然后,我想找到一种方法,我可以只拥有在第 2 列之后的任何列中具有任何值的行。
我还没有找到类似的问题。
如果第二列后至少存在一个非缺失值,您可以使用 DataFrame.notna
and DataFrame.any
:
df = df[df.iloc[:,2:].notna().any(axis=1)]
print (df)
id name val1_rain val2_tik val3_bon val4_tig
0 2349 Rivi 0.11 0.34 0.78 0.21
2 835 Pigi 0.34 NaN 0.32 NaN
3 5093 Tari 0.65 0.12 0.34 2.45