在列重命名期間,我收到了此“復制時更改”警告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:試圖在 DataFrame 的切片副本上設定值
但是,當我使用完全更改列標題時,我沒有收到此警告 df1.columns = ()
我不明白差異的基本原理,我假設兩個操作是等效的,例如在這個問題的答案中沒有提到差異。
注意我不是在問如何處理原始資料的副本,這確實會抑制警告。我在詢問重命名系列的兩種方法之間的區別。
uj5u.com熱心網友回復:
使用.loc使復印件:
df1 = df.loc[:, ['a', 'b']]
df1.rename(columns={df1.columns[0]: 'x', df1.columns[1]: 'y'}, inplace=True)
要了解更多資訊:回傳視圖與副本
uj5u.com熱心網友回復:
使用 .copy() 或 .loc 進行復制:
df1=df[['a', 'b']].copy()
# or
df1=df.loc[:,[df.columns[0],df.columns[1]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/400757.html
