根据标题,这是一个可重复的例子:
raw_data = {'x': ['this', 'that', 'this', 'that', 'this'],
np.nan: [np.nan, np.nan, np.nan, np.nan, np.nan],
'y': [np.nan, np.nan, np.nan, np.nan, np.nan],
np.nan: [np.nan, np.nan, np.nan, np.nan, np.nan]}
df = pd.DataFrame(raw_data, columns = ['x', np.nan, 'y', np.nan])
df
x nan y nan
0 this NaN NaN NaN
1 that NaN NaN NaN
2 this NaN NaN NaN
3 that NaN NaN NaN
4 this NaN NaN NaN
目标是仅删除nan
作为列名称的列(因此请保留列y)。 dropna()
不起作用,因为它对列中的nan
值有所规定,而不是作为列名称的nan
。
df.drop(np.nan, axis=1, inplace=True)
作为列名,则 nan
有效。但是不能使用nan
作为列名的多列,就像我的数据一样。
那么如何删除列名为nan
的多个列?
答案 0 :(得分:10)
In [218]: df = df.loc[:, df.columns.notnull()]
In [219]: df
Out[219]:
x y
0 this NaN
1 that NaN
2 this NaN
3 that NaN
4 this NaN
答案 1 :(得分:1)
你可以尝试
df.columns = df.columns.fillna('to_drop')
df.drop('to_drop', axis = 1, inplace = True)