使用正则表达式为Pandas重命名数据框中的列

lok*_*art 14 python regex pandas

我有一个由Pandas制作的数据框,我想删除每个列名末尾的空白区域.我尝试过类似的东西:

raw_data.columns.values = re.sub(' $','',raw_data.columns.values)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我在这里做错了什么?

lok*_*art 18

我应该使用这个re包:

raw_data = raw_data.rename(columns=lambda x: re.sub(' $','',x))
Run Code Online (Sandbox Code Playgroud)

  • 这只会删除 1 个空格。如果您想删除全部,请使用此选项。`raw_data.columns.values = re.sub(r'[ ]*$','',raw_data.columns.values)` (2认同)

Chr*_*ian 8

我建议使用pandas.Series.str.strip

df.columns = df.columns.str.strip()
Run Code Online (Sandbox Code Playgroud)


Jos*_*osé 5

@Christian 的答案可能适合这个特定问题,但对于有关替换列中名称的更一般问题,我建议创建一个字典理解并将其传递给重命名函数:

df.rename(columns={element: re.sub(r'$ (.+)',r'\1', element, flags = re.MULTILINE) for element in df.columns.tolist()})
Run Code Online (Sandbox Code Playgroud)

就我而言,我想在每列的开头添加一些内容,因此:

df.rename(columns={element: re.sub(r'(.+)',r'x_\1', element) for element in df.columns.tolist()})
Run Code Online (Sandbox Code Playgroud)

您可以使用 inplace=True 参数来实际在数据框中进行更改。