我遇到了一些简单的问题,但是尽管阅读了文档和相关的SO问题,仍然无法看到它。这涉及到从WordPress数据库中导出的数据中过滤记录。
创建一些数据:
import pandas as pd
data = {'number': [1,2,3],\
'field': ['billing_last_name', 'shipping_last_name', 'field_1435'],\
'name': ['jones', 'smith', 'jones']}
dframe = pd.DataFrame(data)
print dframe
field name number
0 billing_last_name jones 1
1 shipping_last_name smith 2
2 field_1435 jones 3
选择数据的一个子集:
field_filter = 'billing_last_name'
number_filter = 1
choice = dframe[(dframe['field'] == field_filter) & (dframe['number'] == number_filter)]
print choice
field name number
0 billing_last_name jones 1
0 jones
Name: name, dtype: object
使用此结果设置变量以进行进一步过滤:
match = str(choice['name'])
问题就在这里。如果我使用变量进行过滤,它将返回空值:
print dframe[dframe['name'] == match]
Empty DataFrame
Columns: [field, name, number]
Index: []
如果我使用字符串变量运行相同的过滤器,它会返回正确的结果:
print dframe[dframe['name'] == 'jones']
field name number
0 billing_last_name jones 1
2 field_1435 jones 3
然而,该变量和其内容都是字符串,显然:
print type('jones')
print type(match)
<type 'str'>
<type 'str'>
为什么带有变量的过滤器不起作用?
series
转换为string
,但它也会包括额外的dtype
信息。match = str(choice['name'])
的结果是:'0 jones\nName: name, dtype: object'
,但是match = str(choice['name'].values[0]
的结果是'jones'
(正如所需)。 - NickBraunagel