首頁 >後端開發 >Python教學 >如何有效地設定 Pandas DataFrame 中的特定單元值?

如何有效地設定 Pandas DataFrame 中的特定單元值?

Linda Hamilton
Linda Hamilton原創
2024-12-01 17:28:11383瀏覽

How to Efficiently Set a Specific Cell Value in a Pandas DataFrame?

為 Pandas DataFrame 中的特定單元格設定值

您已建立一個 DataFrame 並想要變更特定單元格的值。但是,使用 df.xs('C')['x'] = 10 不會如預期般更新 DataFrame。為什麼?

問題源自於 df.xs() 的運作方式。預設情況下,它會傳回一個帶有資料副本的新 DataFrame。因此, df.xs('C')['x'] = 10 僅修改新的 DataFrame,而非原始 DataFrame。

相反,您可以使用 df['x']['C'] = 10. 此方法傳回原始 DataFrame 的視圖,任何修改都會套用至 df。

但是,建議的方法是使用.at 或.iat:

  • df.at['C', 'x'] = 10:直接設定'C'行和'x'列的值。
  • df. iat[2, 0] = 10:使用索引位置存取儲存格(2 表示行,0 表示列)。

為什麼 df.xs('C')['x'] = 10 被棄用?

df.set_value('C' , 'x', 10) 是首選方法,因為它的速度要快得多。但是,df.set_value() 預計將被棄用。

效能比較

基準顯示 df.set_value() 在速度方面優於其他選項:

In [18]: %timeit df.set_value('C', 'x', 10)
100000 loops, best of 3: 2.9 µs per loop

In [20]: %timeit df['x']['C'] = 10
100000 loops, best of 3: 6.31 µs per loop

In [81]: %timeit df.at['C', 'x'] = 10
100000 loops, best of 3: 9.2 µs per loop

以上是如何有效地設定 Pandas DataFrame 中的特定單元值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn