提问人:Md Parvez Alam 提问时间:11/17/2023 更新时间:11/18/2023 访问量:21
条件为“布尔标签不能使用”的 panda 查询
Panda query with condition "boolean label can not be used"
问:
我有以下数据帧
publisher_name show_name UniqueCount_promo_code UniqueValue_promo_code
0 publisher_name1 show_name1 2 [code1, ]
1 publisher_name1 show_name2 1 [code2]
2 publisher_name2 show_name3 2 [code3, code4]
尝试对UniqueValue_promo_code进行查询
condition1 = lambda x: any(val == '' or val is None for val in x) and len(x) == 2
data = result.query(f"{condition1('UniqueValue_promo_code')} ")
gettig 错误
raise KeyError( KeyError: 'False: 布尔标签不能使用 没有布尔索引'
这里有什么问题 谢谢
答:
0赞
Leo
11/18/2023
#1
问题在于 .query 只期望布尔表达式作为字符串。它不适用于 lambda 函数。你可以把它改写为:
import pandas as pd
data = pd.DataFrame({
'publisher_name': ['publisher_name1', 'publisher_name1', 'publisher_name2'],
'show_name': ['show_name1', 'show_name2', 'show_name3'],
'UniqueCount_promo_code': [2, 1, 2],
'UniqueValue_promo_code': [['code1', ''], ['code2'], ['code3', 'code4']]
})
condition = (data['UniqueValue_promo_code'].apply(lambda x: any(val == '' or val is None for val in x)) &
(data['UniqueCount_promo_code'] == 2))
filtered_data = data[condition]
print(filtered_data)
评论