从所有列中均具有“ None”值的数据框中删除行-Python

时间:2019-05-30 11:32:03

标签: python-3.x pandas csv

我需要在所有列中均具有“ None”值的数据框中完全删除该行。我正在使用以下代码-

r(M) = -ropt

这对数据框没有任何影响。值仍为“无”的行仍然存在。

如何实现?

2 个答案:

答案 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关键字删除具有anyall 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