gpt4 book ai didi

python - 模糊 CSV 列匹配

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:56 25 4
gpt4 key购买 nike

我现在正在解析大量 .csv 文件,并且遇到了一个 .csv 将识别(例如)包含一列的问题竞选公职的候选人的姓名,标题为 candidate_name,而另一位候选人则使用 CANDIDATE_FULL_NAME

我正在使用这样的列的结果更新字典,除了不断更改每个不同标题的行[值]。

dict.update({
'candidate': row['column_header']

有办法模糊匹配吗?最好是我几乎可以直接使用的东西,这样我就不必设置正则表达式测试每一列的相似性的类/方法。

我已经设置了一个类来测试将值与值列表相匹配,但我觉得这似乎是我不必自己编写的东西。不幸的是,我的 google-fu 没有返回任何结果。

我会使用列号,但不幸的是,列的顺序并不总是相同。此外,我无法更改原始 .csv 文件(否则我肯定将它们标准化)。

最佳答案

据我所知,pandas 没有内置的“模糊”匹配。如果有一些共同点,例如“姓名”一词仅且始终出现在包含候选人姓名的列中,您可以使用它来重命名姓名列。例如:

import pandas as pd
import numpy as np

def fuzzymatch(df, string, stname):

for col in df.columns:
if col.lower().find(string) > -1:
df.rename(columns={col:stname}, inplace=True)
break

return df

df = pd.DataFrame({"CANDIDATE_NAME_HERE": ["Ted","Fred","Sally","John","Jane"], "B": [20, 30, 10, 40, 50], "C": [32, 234, 23, 23, 42523]})
#pd.read_csv('filename.csv') will load your csv file

string = 'name'
stname = 'candidate_name'

df = fuzzymatch(df, string, stname)
print(df)

B C candidate_name
0 20 32 Ted
1 30 234 Fred
2 10 23 Sally
3 40 23 John
4 50 42523 Jane

关于python - 模糊 CSV 列匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320733/

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