我正在使用 pandas 读取 .csv 数据文件。对于我的一个文件,我可以使用列标题进行索引。对于其他我收到错误消息
File "/usr/lib/python2.7/dist-packages/pandas/core/internals.py",
line 1023, in _check_have
raise KeyError('no item named %s' % com.pprint_thing(item))
KeyError: u'no item named State'
Run Code Online (Sandbox Code Playgroud)
我使用的代码是:
filename = "PovertyEstimates.csv"
#filename = "nm.csv"
f = open(filename)
import pandas as pd
data = pd.read_csv(f)#, index_col=0)
print data['State']
Run Code Online (Sandbox Code Playgroud)
即使当我使用index_col时我也会得到同样的错误(除非它是0)。我发现当我打印在我的终端中不起作用的 csv 文件时,它不会像现在那样分成几列。相反,每行中的项目是连续打印的,并用空格分隔。我相信这种不正确的分离就是问题所在。
我在 Ubuntu Linux 上使用 LibreOffice Calc。对于格式不正确的文件(在 LibreOffice 中以完美格式显示),终端输出为:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3194 entries, 0 to 3193
Data columns:
FIPStxt State Area_name Rural-urban_Continuum Code_2003 Urban_Influence_Code_2003 Rural-urban_Continuum Code_20013 Urban_Influence_Code_20013 POVALL_2011 CI90LBAll_2011 CI90UBALL_2011 PCTPOVALL_2011 CI90LBALLP_2011 CI90UBALLP_2011 POV017_2011 …Run Code Online (Sandbox Code Playgroud) 我用这个来制作一个多年来以某个字母开头的名字百分比图.当绘制(和打印)我的词典(letter_d)时,键是无序的,而不是像它们被添加到词典中一样顺序.有没有办法解决这个问题,我相信我会按顺序将它们添加到dict中.如果没有,我可以创建一个方法连接我的散点图的点,以模拟正确的线图?
import csv
import matplotlib.pyplot as plt
start = 1880
stop = 1890
x = []
years = range(start, stop +1)
print years
letter_d = {}
year_d = {}
alphabet = ['Z']#,'C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
for i in alphabet:
letter_d[i] = 0
for year in years:
filename = 'yob' + str(year) + '.txt'
z = open(filename)
year_d[int(year)] = 0
letter_d[i] = year_d
c = 0
d = 0
for line in z:
y = line.strip().split(',')
y.remove(y[1])
c += int(y[1])
if i in y[0]: …Run Code Online (Sandbox Code Playgroud)