為 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.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中文網其他相關文章!