删除pandas数据帧中的未命名列

mua*_*aiz 37 python dataframe pandas

我有一个来自AG列的数据文件,如下所示,但当我阅读它时,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
Run Code Online (Sandbox Code Playgroud)

我已经看过不同时间的数据文件,但我在其他任何列中都没有额外的数据.如何在阅读时删除这个额外的列?谢谢

Max*_*axU 87

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
Run Code Online (Sandbox Code Playgroud)

如果第一列有索引值,那么您可以这样做:

df = pd.read_csv('data.csv', index_col=0)
Run Code Online (Sandbox Code Playgroud)

  • `index_col=0` 注释非常有用 - 大多数出现的未命名列都是“Unnamed: 0”,这很可能是一个索引。虽然在这个问题中情况并非如此。 (2认同)

小智 15

首先,按名称"未命名"找到列,然后删除这些列.

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


Eza*_*e11 6

已批准的解决方案在我的情况下不起作用,因此我的解决方案如下:

    ''' 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)
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助其他人。


Sus*_*san 5

pandas.DataFrame.dropna函数删除丢失的值(例如NaNNaT)。

例如,以下代码将从数据框中删除该列的所有元素均缺失的所有列。

df.dropna(how='all', axis='columns')
Run Code Online (Sandbox Code Playgroud)

  • 点评来源:欢迎来到Stack Overflow!尝试提供有关您的解决方案如何工作的很好的描述。请参阅:[我如何写一个好的答案?](https://stackoverflow.com/help/how-to-answer)。谢谢 (3认同)