如果列名为nan,如何从数据框中删除整个列,Python 3.6

如果列名为nan,如何从数据框中删除整个列,Python 3.6,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有15列的数据框&一些列名是nan,如果列名是nan,如何删除 栏目: ['Country', 'Survey', 'a typical day', 'a particularly good day', 'a particularl', 'dk/refused', 'total', nan, nan, nan, nan, nan, 'questionsCode'], dtype=object) 预期数据框包含以下列: ['Country', 'Survey', 'a typica

我有15列的数据框&一些列名是nan,如果列名是nan,如何删除

栏目:

['Country', 'Survey', 'a typical day', 'a particularly good day',
   'a particularl', 'dk/refused', 'total', nan, nan, nan, nan, nan,
   'questionsCode'], dtype=object)
预期数据框包含以下列:

['Country', 'Survey', 'a typical day', 'a particularly good day',
   'a particularl', 'dk/refused', 'total', questionsCode'], dtype=object)
设置
考虑样例数据文件<代码> DF

cols = [
    'Country', 'Survey', 'a typical day',
    'a particularly good day', 'a particularl',
    'dk/refused', 'total',
    np.nan, np.nan, np.nan, np.nan, np.nan,
   'questionsCode'
]

df = pd.DataFrame([range(13)], range(2), cols)
df

   Country  Survey  a typical day  a particularly good day  a particularl  dk/refused  total  NaN  NaN  NaN  NaN  NaN  questionsCode
0        0       1              2                        3              4           5      6    7    8    9   10   11             12
1        0       1              2                        3              4           5      6    7    8    9   10   11             12

解决方案1
利用基于标签的索引利用
loc

df.loc[:, df.columns.dropna()]

   Country  Survey  a typical day  a particularly good day  a particularl  dk/refused  total  questionsCode
0        0       1              2                        3              4           5      6             12
1        0       1              2                        3              4           5      6             12

这也会起作用的


解决方案2
使用布尔索引

df.loc[:, df.columns.notnull()]

   Country  Survey  a typical day  a particularly good day  a particularl  dk/refused  total  questionsCode
0        0       1              2                        3              4           5      6             12
1        0       1              2                        3              4           5      6             12
设置
考虑样例数据文件<代码> DF

cols = [
    'Country', 'Survey', 'a typical day',
    'a particularly good day', 'a particularl',
    'dk/refused', 'total',
    np.nan, np.nan, np.nan, np.nan, np.nan,
   'questionsCode'
]

df = pd.DataFrame([range(13)], range(2), cols)
df

   Country  Survey  a typical day  a particularly good day  a particularl  dk/refused  total  NaN  NaN  NaN  NaN  NaN  questionsCode
0        0       1              2                        3              4           5      6    7    8    9   10   11             12
1        0       1              2                        3              4           5      6    7    8    9   10   11             12

解决方案1
利用基于标签的索引利用
loc

df.loc[:, df.columns.dropna()]

   Country  Survey  a typical day  a particularly good day  a particularl  dk/refused  total  questionsCode
0        0       1              2                        3              4           5      6             12
1        0       1              2                        3              4           5      6             12

这也会起作用的


解决方案2
使用布尔索引

df.loc[:, df.columns.notnull()]

   Country  Survey  a typical day  a particularly good day  a particularl  dk/refused  total  questionsCode
0        0       1              2                        3              4           5      6             12
1        0       1              2                        3              4           5      6             12