gpt4 book ai didi

python - 如何在具有字典表示的所有元素的数据框中搜索行?

转载 作者:行者123 更新时间:2023-11-28 22:21:39 25 4
gpt4 key购买 nike

我正在尝试找出如何检查我的数据框中是否有任何行在字典中反射(reflect)了每个项目。字典可能有更多未在数据框行中表达的项目。

例如,

import pandas as pd
validCombinations = { 'combo1':{ 'prop1': 'X', 'prop2':'Y', 'prop3': 'Z' },
'combo2':{ 'prop1': 'U', 'prop3': 'Z' },
'combo3':{ 'prop1': 'X', 'prop2':'X' },
'combo4':{ 'prop1': 'X', 'prop2':'Y', 'prop3': 'U' }
}
df = pd.DataFrame.from_dict( { k: validCombinations[k]
for k in validCombinations.keys() },
orient='index')
print df
>>
prop1 prop2 prop3
combo1 X Y Z
combo2 U NaN Z
combo3 X X NaN
combo4 X Y U

mydict = { 'prop1': 'X', 'prop2':'Y', 'prop3': 'Z', 'prop4': 'V' }

我现在想要一个根据 df 中的完整行是否由 mydict 表达而返回 True 或 False 的函数,

dfRowMatchedMyDict( df, mydict)
--> this should return True since combo1 in df has all items expressed in mydict

我真的不确定我是否应该先将 mydict 转换为数据框,或者如何以干净的方式解决这个问题?

最佳答案

选项 1
df.isin + df.all -

df[df.isin(list(mydict.values())).all(1)]

prop1 prop2 prop3
combo1 X Y Z

选项 2
将 piR 的 hack 与 assign 结合使用,仅过滤有效列并使用 eq -

进行测试
df[df.eq(df.assign(**mydict)[df.columns]).all(1)]

prop1 prop2 prop3
combo1 X Y Z

关于python - 如何在具有字典表示的所有元素的数据框中搜索行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48197618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com