首页 > 解决方案 > Pandas DataFrame 查询 Python

问题描述

我正在尝试查询数据框的值。我的数据由 6 列 G-p1、G-p2、Gc、H-p1、H-p2、Hc 组成。所有列的值都是“左”或“右”,因为它们代表父母/孩子是否具有左撇子或右撇子基因型或惯用手。我想查询父母和孩子左手习惯的值。我试过了:

test1 = pd.DataFrame(data)
test1 = test1.query({
        'H-p1': 'left',
        'H-p2': 'left',
        'H-c': 'left'})
train_data = test1
predict_data = test1
model.fit(test1)
predict_data = predict_data.copy()
predict_data.drop('H-p1', axis=1, inplace=True)
predict_data.drop('H-p2', axis=1, inplace=True)
predict_data.drop('H-c', axis=1, inplace=True)
pred = model.predict_probability(predict_data)
print(pred.to_string())

但我得到这个错误:

ValueError: expr must be a string to be evaluated, <class 'dict'> given

有什么建议么?谢谢!

标签: pythonpandasdataframequerying

解决方案


query方法接收一个字符串表达式,类似于您用于 loc 过滤器的字符串表达式。

尝试这个:

test1 = test1.query("`H-p1` == 'left' and `H-p2` == 'left' and `H-c` == 'left'")
train_data = test1

反引号``用于指定列名。


推荐阅读