寻找有点匹配的名字

Looking for names that somewhat match

我正在创建一个从电子表格加载 DataFrame 的应用程序。有时名称与以前不同(有人稍微更改了列名称)并且几乎没有什么不同。加载 df 时,在新电子表格中“查找”这些密切相关的列名的最佳方式是什么?如果我作为 python 查找“col_1”,但在用户电子表格中该列是“col1”,那么 python 将找不到它。

示例:


import pandas as pd
df = pd.read_excel('data.xlsx')

这是我正在寻找的列名,其余列加载得很好,略有不同的列名被跳过,数据永远不会加载。我如何确保如果名称接近 python 正在寻找的名称,它将被加载到 df 中?

我要找的名字:

'Water Consumption' 'Female Weight' 'Uniformity'

data.xlsx,略有不同的传入数据列名称:

'Water Consumed Actual' 'Body Weight Actual' 'Unif %'

内置函数 difflib.get_close_matches can help you with column names that are slightly wrong. Using that with the usecols argument of pd.read_excel 应该可以帮助您完成大部分工作。

你可以这样做:

import difflib
import pandas as pd

desired_columns = ['Water Consumption', 'Female Weight', 'Uniformity']

def column_checker(col_name):
    if difflib.get_close_matches(col_name, desired_columns):
        return True:
    else:
        return False

df = pd.read_excel('data.xlsx', usecols=column_checker)

你可以修改 get_close_matches 的参数来提高或降低它的敏感度。