Python 从dataframe更改列名

Python 从dataframe更改列名,python,pandas,dataframe,columnname,Python,Pandas,Dataframe,Columnname,我有一个标准普尔500指数中列出的所有公司及其每日数据的数据框架。但是,在每个数据帧列名中都附加了一个不需要的“/n”,我想将其删除 我得到以下错误: df.columns=df.columns.str.replace('*.\n.*','') 包装器中的文件“C:\Python37\lib\site packages\pandas\core\strings.py”,第1843行 返回函数(self、*args、**kwargs) 文件“C:\Python37\lib\site packages

我有一个标准普尔500指数中列出的所有公司及其每日数据的数据框架。但是,在每个数据帧列名中都附加了一个不需要的
“/n”
,我想将其删除

我得到以下错误:

df.columns=df.columns.str.replace('*.\n.*','')
包装器中的文件“C:\Python37\lib\site packages\pandas\core\strings.py”,第1843行
返回函数(self、*args、**kwargs)
文件“C:\Python37\lib\site packages\pandas\core\strings.py”,第2716行,替换为
self.\u parent,pat,repl,n=n,case=case,flags=flags,regex=regex
str\u replace中的文件“C:\Python37\lib\site packages\pandas\core\strings.py”,第619行
compiled=re.compile(pat,flags=flags)
文件“C:\Python37\lib\re.py”,第234行,编译
返回编译(模式、标志)
文件“C:\Python37\lib\re.py”,第286行,在编译中
p=sre_compile.compile(模式、标志)
文件“C:\Python37\lib\sre_compile.py”,第764行,在compile中
p=sre_parse.parse(p,标志)
文件“C:\Python37\lib\sre_parse.py”,第930行,在parse中
p=\u parse\u sub(源、模式、标志和SRE\u标志\u VERBOSE,0)
文件“C:\Python37\lib\sre_parse.py”,第426行,在_parse_sub中
非嵌套和非项目)
文件“C:\Python37\lib\sre_parse.py”,第651行,在_parse中
source.tell()-here+len(this))
回复错误:在位置0(第1行第1列)无需重复
这是导致错误的函数:

def删除额外字符(df):
df.columns=df.columns.str.replace(“*。\n.*”,“”)

给你!新台词不见了!:)


x.strip()
将删除字符串开头和结尾的所有新行字符,并且比
replace('\n','')更易于阅读。
replace()
不使用正则表达式。您不能编写“模式”,例如
*。\n.*
点号和星号将被视为点号和星号。它不会被解释为“匹配任何字符的零个或多个”。如果您想要正则表达式,请使用
re.sub()
您可以发布更多的实际代码或数据帧的示例,以便我们测试我们的解决方案吗?您还可以编写,
df.columns=filter(lambda x:x.strip(),df.columns)
谢谢你解决了我的问题。但不幸的是,另一个问题出现了。不过,我还需要提出另一个问题。。。
import pandas as pd

data = [['tom', 10], ['nick', 15], ['juli', 14]]

df = pd.DataFrame(data, columns=['Name\n\n\n', 'Age\n\n'])

df.rename(columns={old:old.strip() for old in df.columns}, inplace=True)

print(df)