我有一种情况,有时当我从df读取csv时,我会得到一个不需要的类似索引的列,名为无名:0。

file.csv

,A,B,C
0,1,2,3
1,4,5,6
2,7,8,9

CSV是这样读取的:

pd.read_csv('file.csv')

   Unnamed: 0  A  B  C
0           0  1  2  3
1           1  4  5  6
2           2  7  8  9

这太烦人了!有人知道怎么处理吗?


当前回答

根据我的经验,有很多原因可能不希望将该列设置为index_col =[0],正如上面许多人建议的那样。例如,它可能包含混乱的索引值,因为数据在没有df.reset_index(drop=True)的情况下被索引或排序后保存到csv,导致立即混乱。

因此,如果你知道文件有这一列,而你不想要它,根据最初的问题,最简单的一行解决方案是:

Df = pd.read_csv('file.csv')。下降(列=['匿名:0 '])

or

df = pd.read_csv('file.csv',index_col=[0]).reset_index(drop=True)

其他回答

简单地删除列使用:del df['column_name']

另外:

df = df.drop(columns=['Unnamed: 0'])

要获得所有未命名列,你也可以使用正则表达式,如df.drop(df.filter(regex="Unname"),axis=1, inplace=True)

根据我的经验,有很多原因可能不希望将该列设置为index_col =[0],正如上面许多人建议的那样。例如,它可能包含混乱的索引值,因为数据在没有df.reset_index(drop=True)的情况下被索引或排序后保存到csv,导致立即混乱。

因此,如果你知道文件有这一列,而你不想要它,根据最初的问题,最简单的一行解决方案是:

Df = pd.read_csv('file.csv')。下降(列=['匿名:0 '])

or

df = pd.read_csv('file.csv',index_col=[0]).reset_index(drop=True)

另一种可能发生这种情况的情况是,如果您的数据不恰当地写入csv,使每行以逗号结束。这将使您在数据的末尾留下一个未命名的列无名:x,当您试图将其读入df时。