Pandas 中的鍊式賦值
在Pandas 中使用資料幀時,鍊式賦值可能會導致意外行為或誤報,如設定WithCopyWarning。此警告旨在提醒使用者鍊式賦值的潛在陷阱。
鍊式賦值如何運作
在 Pandas 中,大多數方法呼叫都會傳回物件的副本。這意味著當您執行鍊式分配時,例如 df['column'] = df['column'].fillna(...),您可能正在修改原始資料幀的副本而不是原始資料幀本身。
使用.ix()、.iloc() 和.loc() 進行連結的效果
ix()、iloc() 和loc 的選擇()會影響鍊式賦值行為:
最佳編碼實踐
避免潛在問題鍊式賦值,建議將操作結果明確分配給新變數。例如,不要使用:
<code class="python">df['amount'] = df['amount'].fillna(...)</code>
使用:
<code class="python">df['amount_updated'] = df['amount'].fillna(...)</code>
誤報
某些鍊式分配即使在執行時也可能會觸發警告不修改原始資料框。在這種情況下,您可以使用以下方法關閉警告:
<code class="python">pd.set_option('chained_assignment', None)</code>
範例
考慮以下程式碼:
<code class="python">data['amount'] = data.apply(lambda row: function1(row, date, qty), axis=1) data['amount'] = data['amount'].astype(float)</code>
此程式碼可能會引發SettingWithCopyWarning,因為data['amount'] 被指派了兩次。要解決此問題,請將第一個操作的結果指派給新變數:
<code class="python">temp_amount = data.apply(lambda row: function1(row, date, qty), axis=1) data['amount'] = temp_amount.astype(float)</code>
以上是錯誤使用鍊式賦值如何導致 Pandas 出現意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!