gpt4 book ai didi

python - 如何根据 pandas 数据框列中的用户输入找到最接近的字符串匹配?

转载 作者:行者123 更新时间:2023-12-01 00:14:01 25 4
gpt4 key购买 nike

我的 CSV 数据集 Scrips.csv 如下:

Code,Id
500002,ABB
500003,AEGISLOG
500004,TPAEC
500005,AKARLAMIN
500006,ALPHADR
500008,AMARAJABAT
500009,AMBALALSA
500010,HDFC
500011,AMRTMIL-BDM
500012,ANDHRAPET
500013,ANSALAPI

我想以字符串的形式获取用户输入并将其与“Id”列进行匹配。如果没有完全匹配,我还想查看最接近的匹配项,并要求用户输入这些匹配项之一。比赛结束后,我想要返回的Id对应的“Code”。

我想要的输出是:

Enter the Id: ABB
500002

使用以下代码我无法到达任何地方:

import pandas as pd
from difflib import get_close_matches

df = pd.read_csv(r"C:\Users\fc\BSE Scraper\Scrips.csv", index_col=0)

for row in df.index:
if row == "ABB":
print("True")
elif len(get_close_matches(row, df.index())) > 0:
print("Did you mean %s instead?" % get_close_matches(row, df.index())[0])
else:
print("No match found. Please try again.")

最佳答案

您可以使用自定义函数将 Id 列转换为 indexf-strings:

def func(df, x):

df = df.set_index('Id')
m = df.index == x
if m.sum() > 0:
a = df.loc[x, 'Code']
return f'Exact match: {a}'
else:
val = get_close_matches(x, df.index)
if len(val) > 0:
a = df.loc[val[0], 'Code']
return f'Did you mean {val} instead for match {a}? '
else:
return "No match found. Please try again."

print (func(df, 'ABB'))
Exact match: 500002
print (func(df, 'ABB1'))
Did you mean ABB instead for match 500002?
print (func(df, 'something'))
No match found. Please try again.

关于python - 如何根据 pandas 数据框列中的用户输入找到最接近的字符串匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59444198/

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