python - 重命名列与替换列属性之间的区别

标签 python pandas dataframe rename

在使用 df1.rename() 重命名列时,我收到此“复制时更改”警告:

import pandas as pd    

df = pd.DataFrame({'a': (1,2,3),
                   'b': (4,5,6),
                   'c': (7,8,9)})

df1 = df[['a', 'b']]

#df1.columns = ('x', 'y') # Displays nothing
df1.rename(columns={df1.columns[0]: 'x', df1.columns[1]: 'y'}, inplace=True) # Displays the warning

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame

但是,当我使用 df1.columns = () 完全更改列标题时,我没有收到此警告

我不明白这种差异的基本原理,我假设这两种操作是等效的,例如 answers to this question 中没有提到任何差异。 .


请注意,我并不是问如何处理原始数据的副本,这确实会抑制警告。我问的是两种重命名系列的方法之间的区别。

最佳答案

使用 .copy() 或 .loc 进行复制:

df1=df[['a', 'b']].copy()
# or
df1=df.loc[:,[df.columns[0],df.columns[1]]

关于python - 重命名列与替换列属性之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70543369/

相关文章:

python - 以宽格式制作 pandas df 并将值取消连接到不同的列

python - 使用字典将重复行映射到原始行 - Python 3.6

python - Pandas 数据框范围索引

scala - Spark Collect_list 并限制结果列表

python - 如何修复我的 pandas 数据框中的索引,使其不只将值保持为零,而是增加值?

Python,Pyplot - 如何同时 move 两个绘图?

python - 生成卡片组 Python 3

python - 使用 SimpleHTTPServer 禁用索引文件

用于变量命名以指示单位的 Python 约定

python - 设置 pandas 打印输出的列宽