- 我應該真的關心警告嗎?
這取決於。在您的示例中,您首先引用數據的一個子集(df.loc[555]
),然後在該子集上設置值。幾乎總是熊貓使原始數據的copy
和副本上的設置值不會修改原始數據幀,因此警告。
在某些情況下,大熊貓會創建原始數據的view
(例如:如果所有列都具有相同的dtype),則此處的設置值將按預期工作。
如果數據框中的所有列都具有相同的dtype(例如:所有浮點數),並且您在單個現有索引上使用iloc
,那麼您將獲得一個視圖並且可以忽略該警告。如果您正在設置一個不存在的索引,則表示您是Setting with enlargment,這也是預期的行爲,警告也可以忽略。
- 什麼是推薦的方法去做到這一點,使警告不會彈出?
您使用的df.loc
給你提供的信息似乎好。你有幾種選擇,以避免警告:
首先,更新您的熊貓版本。這些誤報警的情況在每個版本都有所改進,我在0.15.1中沒有收到任何信息。
其次,如果你確信你在做什麼是預期的行爲,那麼你可以只用沉默全球警告:
pd.set_option('chained_assignment', None)
最後,在某些情況下,你可以設置你造成的is_copy
財產對象有效地禁用這個檢查對象上,例如:
df_temp = df.loc[555]
df_temp.is_copy = False
注意,這個最後的選擇只能在現有的索引使用,在新的索引這就提出了一個KeyError
。
輸入數據和預期輸出的任何示例都是有用的。 – Marcin 2014-12-08 00:42:48
感覺像一個很好的答案是沒有這個提供。 – user3659451 2014-12-08 18:39:37