熊猫:如何删除多个列作为列名?

时间:2017-09-07 17:00:59

标签: python pandas

根据标题,这是一个可重复的例子:

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的多个列?

2 个答案:

答案 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)