【问题标题】:read_csv doesn't read the column names correctly on this file?read_csv 没有正确读取此文件上的列名?
【发布时间】:2016-09-29 21:57:08
【问题描述】:

我有一个csv文件如下:

0 5
1 10
2 15
3 20
4 25

我想将它保存为以 x,y 轴为名称的数据框,然后绘制它。但是,当我分配 x,y 时,我得到了一个混乱的 DataFrame,发生了什么?

column_names = ['x','y']
x = pd.read_csv('csv-file.csv', header = None, names = column_names)
print(x)

          x   y
0   0 5 NaN
1  1 10 NaN
2  2 15 NaN
3  3 20 NaN
4  4 25 NaN

我试过不为header指定None,但无济于事。

【问题讨论】:

  • 因为严格来说,这不是逗号分隔值 (CSV),而是空格分隔值,有时通常称为 TSV(制表符分隔值)。

标签: python csv pandas dataframe


【解决方案1】:

将参数sep="\s+"delim_whitespace=True添加到read_csv

import pandas as pd

temp=u"""0 5
1 10
2 15
3 20
4 25"""
#after testing replace io.StringIO(temp) to filename
column_names = ['x','y']
df = pd.read_csv(pd.compat.StringIO(temp), sep="\s+", header = None, names = column_names)

print (df)
   x   y
0  0   5
1  1  10
2  2  15
3  3  20
4  4  25

或者:

column_names = ['x','y']
df = pd.read_csv(pd.compat.StringIO(temp),
                 delim_whitespace=True, 
                 header = None, 
                 names = column_names)

print (df)
   x   y
0  0   5
1  1  10
2  2  15
3  3  20
4  4  25

【讨论】:

    【解决方案2】:

    你可以试试这个:

    import pandas as pd    
    
    column_names = ['x','y']
    df = pd.read_csv('csv-file.csv',header=None)
    df.columns = column_names
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 2014-11-17
      • 2020-03-02
      • 1970-01-01
      • 2022-12-30
      • 2022-11-02
      • 2021-08-12
      • 1970-01-01
      相关资源
      最近更新 更多