Remove Unnamed columns in pandas dataframe

我有一个数据文件从列 A-G 如下,但当我阅读它与 pd.read_csv('data.csv')它打印一个额外的 unnamed列在结束没有理由。

colA    ColB    colC    colD    colE    colF    colG    Unnamed: 7
44      45      26      26      40      26      46        NaN
47      16      38      47      48      22      37        NaN
19      28      36      18      40      18      46        NaN
50      14      12      33      12      44      23        NaN
39      47      16      42      33      48      38        NaN

我已经多次看到我的数据文件,但我没有额外的数据在任何其他列。在阅读时,我应该如何删除这个额外的列?谢谢

240177 次浏览
df = df.loc[:, ~df.columns.str.contains('^Unnamed')]


In [162]: df
Out[162]:
colA  ColB  colC  colD  colE  colF  colG
0    44    45    26    26    40    26    46
1    47    16    38    47    48    22    37
2    19    28    36    18    40    18    46
3    50    14    12    33    12    44    23
4    39    47    16    42    33    48    38

注意: 通常只有一个未命名列 Unnamed: 0,它是 CSV 文件中的第一列。这是以下步骤的结果:

  1. 使用参数 index=True(违约行为)将 DataFrame 保存到 CSV 文件中
  2. 我们使用 pd.read_csv()将这个 CSV 文件读入 DataFrame,而没有显式指定 index_col=0(默认值: index_col=None)

消除这个列的最简单方法是指定参数 pd.read_csv(..., index_col=0):

df = pd.read_csv('data.csv', index_col=0)

首先,找到“未命名”的列,然后删除这些列。注意: 您还应该将 inplace = True添加到 .drop参数中。

df.drop(df.columns[df.columns.str.contains('unnamed',case = False)],axis = 1, inplace = True)

pandas.DataFrame.dropna函数删除 缺少价值观(例如 NaNNaT)。

例如,下面的代码将从数据框中删除任何列,其中该列的所有元素都不存在。

df.dropna(how='all', axis='columns')

The approved solution doesn't work in my case, so my solution is the following one:

    ''' The column name in the example case is "Unnamed: 7"
but it works with any other name ("Unnamed: 0" for example). '''


df.rename({"Unnamed: 7":"a"}, axis="columns", inplace=True)


# Then, drop the column as usual.


df.drop(["a"], axis=1, inplace=True)

希望能帮到别人。