read_csv 没有正确读取此文件上的列名?
Posted
技术标签:
【中文标题】read_csv 没有正确读取此文件上的列名?【英文标题】:read_csv doesn't read the column names correctly on this file? 【发布时间】: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(制表符分隔值)。 【参考方案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
【讨论】:
以上是关于read_csv 没有正确读取此文件上的列名?的主要内容,如果未能解决你的问题,请参考以下文章
我想知道pandas读取txt文件以后,用names添加了列名,但是列名没有对齐每一列数据!!