如何摆脱熊猫DataFrame中的“未命名:0”列?

发布于 2021-01-29 14:58:01

我遇到一种情况,有时当我csv从中读取时,会df得到一个不需要的类似索引的列,名为unnamed: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

这很烦人!有谁知道如何摆脱这一点?

关注者
0
被浏览
83
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是索引列,请通过传递index=False以免将其写出,请参阅文档

    例:

    In [37]:
    df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
    pd.read_csv(io.StringIO(df.to_csv()))
    
    Out[37]:
       Unnamed: 0         a         b         c
    0           0  0.109066 -1.112704 -0.545209
    1           1  0.447114  1.525341  0.317252
    2           2  0.507495  0.137863  0.886283
    3           3  1.452867  1.888363  1.168101
    4           4  0.901371 -0.704805  0.088335
    

    与之比较:

    In [38]:
    pd.read_csv(io.StringIO(df.to_csv(index=False)))
    
    Out[38]:
              a         b         c
    0  0.109066 -1.112704 -0.545209
    1  0.447114  1.525341  0.317252
    2  0.507495  0.137863  0.886283
    3  1.452867  1.888363  1.168101
    4  0.901371 -0.704805  0.088335
    

    您还可以选择read_csv通过传递index_col=0以下内容来判断第一列是索引列:

    In [40]:
    pd.read_csv(io.StringIO(df.to_csv()), index_col=0)
    
    Out[40]:
              a         b         c
    0  0.109066 -1.112704 -0.545209
    1  0.447114  1.525341  0.317252
    2  0.507495  0.137863  0.886283
    3  1.452867  1.888363  1.168101
    4  0.901371 -0.704805  0.088335
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看