我尝试使用pandas从csv文件导入数据:
data=pd.read_csv("data.csv")
这似乎工作正常。接下来我想指定列'姓名
data.columns = ['X', 'Y']
以便我可以稍后绘制它。问题来了:
File "pandas/_libs/hashtable_class_helper.pxi", line 1273, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'X'
csv文件具有以下格式
X Y
20 120
25 145
41 160
62 301
...
任何人都知道我做错了什么?
谢谢!
答案 0 :(得分:0)
您正在尝试导入“空格”分隔的DataFrame。正如@jezrael在评论中所说,你应该使用:
data=pd.read_csv("data.csv", delim_whitespace=True)
来自official doc:
delim_whitespace:布尔值,默认为False
相当于设置sep ='\ s +'。 如果此选项设置为True,则不应为delimiter参数传递任何内容。
此外,如果您想指定列名称(这是您的问题):
再次从official documentation您可以看到您应该:
names
参数指定列应采用的名称。header
参数告诉python第一行(索引0)应该被解析为colnames 所以要恢复,你应该可以使用以下三个语句中的任何一个:
data = pandas.csv("data.csv", delim_whitespace=True, names=["X","Y"])
data = pandas.csv("data.csv", delim_whitespace=True, header=0)
data = pandas.csv("data.csv", sep="\s+")
关于
header
参数:用作列名的行号和数据的开头。默认行为是推断列名称 如果没有传递名称,则行为与header = 0相同,并且从文件的第一行推断列名称
请注意,如果skip_blank_lines = True,此参数将忽略注释行和空行,因此header = 0表示第一行数据而不是文件的第一行