我在OS X 10.11.5上运行anaconda,并且正在努力访问pandas DataFrame中的数据。直接做它可以正常工作但是,当我尝试评估我通过迭代生成的字符串中的参数时,它会失败。这是一个更简单的版本,在没有迭代的情况下产生相同的问题。
直接访问 - 这很好用:
isChecked
这是一种尝试,将选择器生成为字符串,然后进行评估:
from pandas import *
df = read_csv('~/FutureLearn/Learn to Code for Data Analysis/WHO POP TB all.csv')
df1 = (df['Country'] == 'Brazil') # Also works without ()
df1 # A pandas Series
df[df1] # Accesses DataFrame OK
这会生成ValueError,我无法使用该表达式来访问DataFrame。为什么这个df1str = ("df['Country'] == 'Brazil'")
eval(df1str) # ValueError: unknown type str224 - would have expected Series
不起作用?或者我必须做些什么才能使用字符串来访问DataFrame?
感谢您的帮助(就此而言,我的第一篇stackOverflow帖子)。
答案 0 :(得分:0)
pandas.eval 返回系列,因此您想使用
lukas@crash:~/sandbox$ cat a.csv
a,b
1,2
lukas@crash:~/sandbox$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>> pandas.__version__
'0.13.1'
>>> df = pandas.read_csv('a.csv')
>>> df1str = "df['a'] == '1'"
>>> df1 = pandas.eval(df1str)
>>> type(df1)
<class 'pandas.core.series.Series'>
>>>