我正在尝试从列列表中创建一个布尔掩码。
print(mydata[evidencenames] == evidences)
mydata [evidencenames]给出了一个包含3列的pandas数据框,而证据为列表中的每个列提供了一个值。但是当我尝试运行它时,它给了我这个错误:
带有块值的无效广播比较[['Female',47,78]]
我该如何解决?
答案 0 :(得分:0)
您可以使用pd.DataFrame.isin
。对于您的查询,需要具有列表值的字典:
df = pd.DataFrame([['Female', 57, 78], ['Female', 47, 78], ['Female', 47, 75]],
columns=['Col1', 'Col2', 'Col3'])
evidencenames = ['Col1', 'Col2', 'Col3']
searchvalues = ['Female', 47, 78]
d = dict(zip(evidencenames, ([i] for i in searchvalues)))
df_masked = df[df[evidencenames].isin(d).all(1)]
print(df_masked)
Col1 Col2 Col3
1 Female 47 78