我有大约100个我正在通过熊猫读取的Excel文件,它包含相似但不完全相同的列名。如何在Pandas数据框中通过正则表达式更改列名?
regex_keep = {
'CAR_ID': 'item *code',
'CAR_PRICE': 'item *price',
'CAR_PERIOD': 'car *period'
}
df列可以是项目代码,项目代码,项目代码
答案 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')