我在Python 2.7中使用pandas并读取这样的csv文件:
import pandas as pd
df = pd.read_csv("test_file.csv")
df有一个标题为rating
的列,以及一个标题为'review'的列,我对df
进行了一些操作,例如:
df3 = df[df['rating'] != 3]
现在,如果我在df['review']
和df3['review']
查看调试器,我会看到以下信息:
df['review'] = {Series}0
df3['review'] = {Series}1
另外,如果我想查看df['review']
的第一个元素,我会使用:
df['review'][0]
这很好,但如果我对df3
做同样的事情,我会收到此错误:
df3['review'][0]
{KeyError}0L
然而,看起来我可以这样做:
df3['review'][1]
有人可以解释一下这个区别吗?
答案 0 :(得分:1)
在系列上使用整数进行索引并不像列表那样工作。特别是,df['review'][0]
并未获得"评论"的第一个元素。列,它获取索引为0的元素:
In [4]: s = pd.Series(['a', 'b', 'c', 'd'], index=[1, 0, 2, 3])
In [5]: s
Out[5]:
1 a
0 b
2 c
3 d
dtype: object
In [6]: s[0]
Out[6]: 'b'
据推测,在生成df3
时,您删除了索引为0的行。如果您确实想要获取第一个元素而不考虑索引,请使用iloc
:
In [7]: s.iloc[0]
Out[7]: 'a'