我认为首先最好调查一下,什么是真正的列名,如果转换为列表更好,会看到一些空格或类似的:
print (reviews_new.columns.tolist())
我认为可能有两个问题(显然):
1.列名中的空格(也可能在数据中)
解决方案是strip http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.strip.html列名中的空格:
reviews_new.columns = reviews_new.columns.str.strip()
或者添加参数skipinitialspace
to read_csv http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html:
reviews_new = pd.read_csv("D:\\aviva.csv", skipinitialspace=True)
2.默认分隔符不同,
解决办法是添加参数sep
:
#sep is ;
reviews_new = pd.read_csv("D:\\aviva.csv", sep=';')
#sep is whitespace
reviews_new = pd.read_csv("D:\\aviva.csv", sep='\s+')
reviews_new = pd.read_csv("D:\\aviva.csv", delim_whitespace=True)
EDIT:
您在列名称中出现空格,因此需要1.solutions
:
print (reviews_new.columns.tolist())
['Name', ' Date', ' review']
^ ^
EDIT1:
如果没有列名 if 测试print (df.columns.tolist())
并且无法选择 DataFrame 解决方案的第一个“列”df.index
:
df = pd.DataFrame({'col':list('abc'),
'col1':list('efg'),
'col2':range(3)}).set_index('col1')
print (df)
col col2
col1
e a 0
f b 1
g c 2
print (df.columns.tolist())
['col', 'col2']
print (df.index)
Index(['e', 'f', 'g'], dtype='object', name='col1')
print (df.index.get_level_values('col1'))
Index(['e', 'f', 'g'], dtype='object', name='col1')
如果存在多重索引:
df = pd.DataFrame({'col':list('abc'),
'col1':list('efg'),
'col2':range(3)}).set_index(['col1', 'col'])
print (df)
col2
col1 col
e a 0
f b 1
g c 2
print (df.index)
MultiIndex([('e', 'a'),
('f', 'b'),
('g', 'c')],
names=['col1', 'col'])
print (df.index.get_level_values('col1'))
Index(['e', 'f', 'g'], dtype='object', name='col1')