首页 > 解决方案 > Pandas 中的方法链:str.replace 不起作用

问题描述

我想读入一个excel文件,并使用方法链接,将列名转换为小写,并将任何空格替换为_。以下代码运行良好

def supp_read(number):
    filename = f"supplemental-table{number}.xlsx"
    df = (pd.read_excel(filename,skiprows=5)
            .rename(columns = str.lower))
    return df

但是下面的代码没有

def supp_read(number):
    filename = f"supplemental-table{number}.xlsx"
    df = (pd.read_excel(filename,skiprows=5)
            .rename(columns = str.lower)
            .rename(columns = str.replace(old=" ",new="_")))
    return df

添加该str.replace行后,我收到以下错误:No value for argument 'self' in unbound method call. 有人可以阐明我可以做些什么来解决此错误以及为什么上述方法不起作用?

此外,当我使用时,str.lower()我得到了同样的错误。为什么str.lower有效但无效str.lower()

标签: pythonpandas

解决方案


这是我经常使用的另一种语法:

def supp_read(number):
    filename = f"supplemental-table{number}.xlsx"
    df = pd.read_excel(filename,skiprows=5)
    df.columns = df.columns.str.lower().replace(" ", "_")
    return df

推荐阅读