b10*_*101 2 python rows pandas
当该行的每列中的所有单元格都为 0 或“nan”(ID 列除外,这将是一些唯一值)时,我需要从数据框中删除所有行,我已经尝试了下面的命令,但没有运气。预期的输出也粘贴在下面。先感谢您!
数据
df = pd.DataFrame({'id':[1,2,3,4],'a':[0,0,0,1], 'b':[0,1,'nan',1], 'c':['nan',1,0,1]})
id a b c
0 1 0 0 nan
1 2 0 1 1
2 3 0 nan 0
3 4 1 1 1
Run Code Online (Sandbox Code Playgroud)
命令
df.loc[df[(df != 0) & (df != ('nan'))].all(axis=1)]
Run Code Online (Sandbox Code Playgroud)
预期产出
id a b c
0 2 0 1 1
1 4 1 1 1
Run Code Online (Sandbox Code Playgroud)
使用您显示的示例,请尝试执行以下操作。使用Pandas 的drop,isin函数。
df[~df.drop('id', 1).isin([0,'nan']).all(1)]
Run Code Online (Sandbox Code Playgroud)
输出如下:
id a b c
1 2 0 1 1
3 4 1 1 1
Run Code Online (Sandbox Code Playgroud)
解释:
df.drop('id', 1).isin([0,'nan']).all(1):使用drop函数在轴 1 上删除来删除列 id,然后检查其值是否存在于 0 或 nan 中,然后使用all检查所有值是否为 TRUE,然后给出 true。~反转上述掩码的输出以从 DataFrame 中获取预期输出。