我需要在所有列中均具有“ None”值的数据框中完全删除该行。我正在使用以下代码-
r(M) = -ropt
这对数据框没有任何影响。值仍为“无”的行仍然存在。
如何实现?
答案 0 :(得分:0)
None
应该是字符串,因此请先使用replace:
df = df.replace('None', np.nan).dropna(how='all')
df = pd.DataFrame({
'a':['None','a', 'None'],
'b':['None','g', 'None'],
'c':['None','v', 'b'],
})
print (df)
a b c
0 None None None
1 a g v
2 None None b
df1 = df.replace('None', np.nan).dropna(how='all')
print (df1)
a b c
1 a g v
2 NaN NaN b
或者测试不等于且DataFrame.any
的值None
:
df1 = df[df.ne('None').any(axis=1)]
print (df1)
a b c
1 a g v
2 None None b
答案 1 :(得分:0)
您应该放下1
轴。使用how
关键字删除具有any
或all
NaN
值的列。检查docs
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[1,2,3], 'b':[-1, 0, np.nan], 'c':[np.nan, np.nan, np.nan]})
df
a b c
0 1 -1.0 NaN
1 2 0.0 NaN
2 3 NaN 5.0
df.dropna(axis=1, how='any')
a
0 1
1 2
2 3
df.dropna(axis=1, how='all')
a b
0 1 -1.0
1 2 0.0
2 3 NaN