我想从

['$a', '$b', '$c', '$d', '$e']

to

['a', 'b', 'c', 'd', 'e']

当前回答

请注意,前面答案中的方法不适用于MultiIndex。对于MultiIndex,您需要执行以下操作:

>>> df = pd.DataFrame({('$a','$x'):[1,2], ('$b','$y'): [3,4], ('e','f'):[5,6]})
>>> df
   $a $b  e
   $x $y  f
0  1  3  5
1  2  4  6
>>> rename = {('$a','$x'):('a','x'), ('$b','$y'):('b','y')}
>>> df.columns = pandas.MultiIndex.from_tuples([
        rename.get(item, item) for item in df.columns.tolist()])
>>> df
   a  b  e
   x  y  f
0  1  3  5
1  2  4  6

其他回答

如“使用文本数据:

df.columns = df.columns.str.replace('$', '')

一个简单而“有趣”(和蟒蛇?)的解决方案:

df.rename(columns={x: x.replace('$', '') for x in df.columns})

哪里:

df = pd.DataFrame(columns=['$a', '$b', '$c', '$d', '$e'])

步骤:

获取DataFrame的列作为列表:

df.columns

在DataFrames中重命名的方法:

df.rename()

属性以指定要重命名列:

columns={}

在字典中,您需要指定要重命名的列(在每个键中)以及它们将获得的新名称(每个值)

{'old_col_name': 'new_col_name', ...}

由于您的更改遵循一种模式,为了删除每列中的$字符,我们可以使用字典理解:

{x: x.replace('$', '') for x in df.columns}
df.rename(index=str, columns={'A':'a', 'B':'b'})

pandas.DataFrame.rename

假设您可以使用正则表达式,则此解决方案无需使用正则表达式进行手动编码:

import pandas as pd
import re

srch = re.compile(r"\w+")

data = pd.read_csv("CSV_FILE.csv")
cols = data.columns
new_cols = list(map(lambda v:v.group(), (list(map(srch.search, cols)))))
data.columns = new_cols
df = pd.DataFrame({'$a': [1], '$b': [1], '$c': [1], '$d': [1], '$e': [1]})

如果新列列表的顺序与现有列的顺序相同,则分配很简单:

new_cols = ['a', 'b', 'c', 'd', 'e']
df.columns = new_cols
>>> df
   a  b  c  d  e
0  1  1  1  1  1

如果您有一个将旧列名键入到新列名的字典,可以执行以下操作:

d = {'$a': 'a', '$b': 'b', '$c': 'c', '$d': 'd', '$e': 'e'}
df.columns = df.columns.map(lambda col: d[col])  # Or `.map(d.get)` as pointed out by @PiRSquared.
>>> df
   a  b  c  d  e
0  1  1  1  1  1

如果你没有列表或字典映射,你可以通过列表理解去掉前导$符号:

df.columns = [col[1:] if col[0] == '$' else col for col in df]