在使用 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/