寻找有点匹配的名字
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
的参数来提高或降低它的敏感度。
我正在创建一个从电子表格加载 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
的参数来提高或降低它的敏感度。