使用Python删除Pandas列名中的特殊字符和单位

问题描述 投票:0回答:1

我正在编写一个脚本,将数据文件从一种格式转换为另一种格式。我需要从列标题中删除特殊字符。

我正在使用 Pandas 读取具有以下结构的 CSV 文件。我正在寻找一种简洁的方法来删除列名称中的 [units]。

数据文件:

Date        ,Time        ,app1_sum [Ml] ,app1_q [l/s]  ,app1_h [m] ,app1_a [m²] ,app1_v [m/s] ,app1_t_water [°C]
02.10.2024  ,19:05:00    ,57293.336     ,620.78        ,0.436      ,0.586       ,1.059        ,18.2

我的目标是将列名称简化为最简单的形式:

Date,Time,app1_sum,app1_q,app1_h,app1_a,app1_v,app1_t_water

我目前的做法是先移除支架,然后一次移除一个再挖矿单元。

df.columns = df.columns.str.replace('[', '')
df.columns = df.columns.str.replace(']', '')
df.columns = df.columns.str.replace(' Ml', '') 

我还尝试使用正则表达式一次删除一个单元,这可行,但感觉不对。

df.rename(columns=lambda x: re.sub(r'\[Ml\]', '', x), inplace=True)
df.rename(columns=lambda x: re.sub(r'\[l/s\]', '', x), inplace=True)
df.rename(columns=lambda x: re.sub(r'\[m\]', '', x), inplace=True)
df.rename(columns=lambda x: re.sub(r'\[m²\]', '', x), inplace=True)
df.rename(columns=lambda x: re.sub(r'\[m/s\]', '', x), inplace=True)
df.rename(columns=lambda x: re.sub(r'\[°C\]', '', x), inplace=True)
python pandas regex
1个回答
0
投票

您可以仅在空格上拆分并保留每个列名称的第一项。

df.columns = [c.split(' ')[0] for c in df.columns]
© www.soinside.com 2019 - 2024. All rights reserved.