gpt4 book ai didi

pandas - 如果数据框列值匹配字典键,检查不同的列是否匹配字典值

转载 作者:行者123 更新时间:2023-12-03 23:47:10 25 4
gpt4 key购买 nike

我有一个包含 2 列感兴趣的数据框。两者都充满了字符串。我还有一个映射键值对的字典,它们也是字符串。我正在使用字典的键按第一列过滤数据框,仅用于字典中的那些键。

最终目标是然后查找数据帧的第一列将其与字典中的键匹配,然后确认第 2 列的值与字典中的值匹配。

感兴趣的键上的过滤数据框按预期工作,所以我留下了两列的数据框,其中只有字典中存在的列键。过滤后的数据框可以是几行到数千行,但字典的长度是静态的。

最终输出应该是一个数据框,其内容显示过滤后的数据框的行,其中第二列的值与字典的值不匹配。

pairs = {'red': 'apple', 'blue': 'blueberry', 'yellow':'banana'}
filtered_data = {'Color':['red', 'blue'], 'Fruit':['appl','blueberry']}
filtered_df = pd.DataFrame(filtered_data)

#so the filtered_df would resemble
Color Fruit
red appl
blue blueberry

for row in filtered_df.iterrows():
for k,v in pairs.items():
#Here's where I'd like to check the value of column 1, find it in the dict then if the
#values dont match between col 2 in the df and the dict, append the mismatched row to a
#new df.
if row['Color'] == k:
new_df.append(row).where(row['Fruit'] != v)

我确定我需要第一个 for 循环中的行的索引,但我不确定如何格式化嵌套循环结构的其余部分。

理想情况下,当我导出 new_df 时在这种情况下,数据框将有 1 行,颜色列为红色,水果列为 appl,因为它与类似于下面的字典不匹配。
Color   Fruit
red appl

最佳答案

就个人而言,我会根据您的 pairs 创建一个数据框字典并进行左反连接,这将使我们只剩下左数据框中与 pairs 不匹配的匹配项。字典。

df1 = pd.DataFrame.from_dict(pairs, orient="index", columns=["Fruit"])\
.rename_axis("Color")\
.reset_index()

final = pd.merge(filtered_df,df1,on=['Fruit','Color'],how='outer',indicator=True)\
.query("_merge == 'left_only'").drop('_merge',axis=1)

print(final)

Color Fruit
0 red appl

关于pandas - 如果数据框列值匹配字典键,检查不同的列是否匹配字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61980869/

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