如何检测字符串无论大写,小写,有/没有python中的空间?



所以我处理的csv文件,列名是可变的。

例如,列名总是有"名"、"姓"、"电话号码"等。但是,每次我下载这个csv文件(每天更新)时,列名可能会更改为"firstname";或者"名";或";firstname"甚至是"firstname"。因为我必须将列与我自己的数据库列相匹配,所以我不能使用index.

我现在能想到的解决方案是每次脚本读取csv文件时更改所有列。

csv_table = pd.read_csv(filename)
custom_col_name = ['First Name', 'Last Name', 'Phone Number']
csv_table.columns = custom_col_name

但如果有一天他们(生成csv文件)决定更改列的顺序,我的脚本和结果将会陷入困境。

有没有办法让我设置一个模式来查找,然后改变它。

像这样:

  1. 读csv
  2. 查找与'first name'相似的列
  3. 改变这一列"名字">
  4. (对所有列重复)

通过将列名转换为小写并删除空白来重命名列。

import re
df.columns= df.columns.str.lower()
df = df.rename(columns=lambda x: re.sub('s+', '', x))
# Define the desired column names (order doesn't matter)
target_names = ['First Name', 'Last Name', 'Phone Number']
# Build mapping dictionary
mapper = {}
for col_name in df.columns:
for target_name in target_names:
for_compare_1 = col_name.lower().replace(' ', '')
for_compare_2 = target_name.lower().replace(' ', '')
if for_compare_1 == for_compare_2:
mapper[col_name] = target_name
break
# Rename the columns
df = df.rename(columns=mapper)

相关内容

  • 没有找到相关文章

最新更新