我有一個 pandas 數據框,它只有一列,該列中每個單元格的值是一個數字列表/數組,該列表的長度為 100,并且該長度在所有單元格值中都是一致的。我們需要將每個列表值轉換為列值,換句話說,有一個包含 100 列的數據框,每個列值都位于列表/數組項中。像這樣的東西 變成可以使用 iterrows() 來完成,如下所示,但我們有大約 150 萬行,需要一個可擴展的解決方案,因為 iterrows() 會花費大量時間。cols = [f'col_{i}' for i in range(0, 4)]df_inter = pd.DataFrame(columns = cols)for index, row in df.iterrows(): df_inter.loc[len(df_inter)] = row['message']
2 回答

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
你可以這樣做:
In [28]: df = pd.DataFrame({'message':[[1,2,3,4,5], [3,4,5,6,7]]})
In [29]: df
Out[29]:
message
0 [1, 2, 3, 4, 5]
1 [3, 4, 5, 6, 7]
In [30]: res = pd.DataFrame(df.message.tolist(), index= df.index)
In [31]: res
Out[31]:
0 1 2 3 4
0 1 2 3 4 5
1 3 4 5 6 7

慕妹3146593
TA貢獻1820條經驗 獲得超9個贊
我認為這會起作用:
df.message.apply(pd.Series)
要使用 dask 進行擴展(假設已安裝):
import dask.dataframe as dd
ddf = dd.from_pandas(df, npartitions=8)
ddf.message.apply(pd.Series, meta={0: 'object'})
添加回答
舉報
0/150
提交
取消