如何重命名不完全匹配的熊猫数据框的列?

时间:2019-07-05 03:04:29

标签: pandas

我有大约100个我正在通过熊猫读取的Excel文件,它包含相似但不完全相同的列名。如何在Pandas数据框中通过正则表达式更改列名?

regex_keep = {
  'CAR_ID': 'item *code', 
  'CAR_PRICE': 'item *price',
  'CAR_PERIOD': 'car *period'
             }

df列可以是项目代码,项目代码,项目代码

1 个答案:

答案 0 :(得分:0)

我们可以将df.rename与API df.rename(index=str, columns={"old_col_name":"new_col_name", "old_col_name":"new_col_name"})一起使用

但是我认为我们不能在该语句中直接包含正则表达式,因此我们必须首先使用正则表达式(通过df.columns)找到确切的列名,然后将{old:new}对传递给rename方法。

对于您的具体情况,我们可以采取以下措施:

import pandas as pd
import re
df = pd.DataFrame(columns=['item code', 'item_Price', 'car_period'])
replacement = {r"item[_ ]code": "CAR_ID", r"item[_ ]price": "CAR_PRICE", "car[_ ]period": "CAR_PERIOD"}
column_repl_map = {col: col for col in df.columns}
for key in column_repl_map:
    for pattern, repl in replacement.items():
        if re.match(pattern, key.lower()):
            column_repl_map[key] = repl
df = df.rename(index=str, columns=column_repl_map)
print(df.columns)

[OUT]: Index(['CAR_ID', 'CAR_PRICE', 'CAR_PERIOD'], dtype='object')