使用資料框時,通常需要調整各個資料框的內容細胞。在本例中,任務是將特定清單「abc」插入資料幀的儲存格 1B 中。我們進行了各種嘗試,但每種嘗試都遇到了自己的挑戰。
最初,嘗試使用 df.ix[1,'B'] = abc 將整個列表直接分配給單元格導致了 ValueError由於鍵和值的數量不匹配。使用 df.ix[1,'B'] = [abc] 會建立一個以 'abc' 列表作為其唯一元素的列表,這是不需要的。
使用 df 將清單轉換為字串。 ix[1,'B'] = ', '.join(abc) 將預期內容產生為字串而非清單。類似地,使用 df.ix[1,'B'] = [', '.join(abc)] 建立一個包含單一字串元素的清單。
隨後嘗試將清單插入到更複雜的資料幀中涉及整數和字串的列類型遇到錯誤。這表明問題在於列的混合資料類型。
要解決此問題,建議使用 at 屬性而不是 loc。此方法始終引用單一值,避免了 loc 遇到的問題。此外,確保插入的列具有 dtype=object 可以防止進一步的錯誤。
例如,以下程式碼成功將「abc」清單插入 df2 資料幀的儲存格 1B 中:
import pandas as pd abc = ['foo', 'bar'] df2 = pd.DataFrame(data={'A': [12, 23], 'B': [None, None], 'C': ['bla', 'bla bla']}) df2['B'] = df2['B'].astype('object') # Ensure 'B' has dtype=object df2.at[1, 'B'] = abc print(df2)
輸出:
A B C 0 12 NaN bla 1 23 [foo, bar] bla bla
以上是如何有效地將清單插入 Pandas DataFrame 的特定單元格中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!