尝试理解使用inplace=true与false更改列名

2024-09-26 17:55:32 发布

您现在位置:Python中文网/ 问答频道 /正文

据我所知,当我更改列名时,将inplace设置为true或false的决定取决于我是想改变原始数据帧(inplace=True)还是创建新的数据帧对象(inplace=False

我在xlsx中有一个源文件,其中数据帧所需的列名位于第2行。我需要更改其中一个列名,使其与分析的其余部分一致

df_original = pd.read_excel('filepath.xlsx', sheet_name = "LookUpReferences", skiprows = 1)
df_original = df_original.rename(columns = {'WrongName': 'CorrectName'}, inplace = True)

当我这样做,例如,通过head()函数查看输出时,我得到

AttributeError: 'NoneType' object has no attribute 'head'

我可以通过创建一个新的数据帧并设置inplace=False来解决这个问题,即

df_new = df_original.rename(columns = {'WrongName': 'CorrectName'}, inplace = False)

但这会变得很麻烦。所以我试图理解为什么inplace=True没有按我希望的方式工作。它是read_excel()的skiprows部分吗???这是我能想到为什么我得到一个非类型的唯一原因。但是,非常像乔恩·斯诺,我什么都不知道

谢谢


Tags: columns数据falsetruedfreadxlsxexcel
1条回答
网友
1楼 · 发布于 2024-09-26 17:55:32

正如您自己所说,inplace=True改变原始数据帧,因此您不必重新分配它。 另一方面,默认设置为inplace=False,因此您可以重命名(并重新分配)为:

df_new = df_original.rename(columns = {'WrongName': 'CorrectName'})

我不确定这对你来说是否太麻烦了

此外,正如这里解释的inplace performance,不能保证就地操作运行得更快

相关问题 更多 >

    热门问题