我有一個包含來自 C 結構的記錄的二進制檔案。我想將該檔案讀入 Polars Dataframe。
我可以按如下方式完成,但我想知道是否有更直接的路徑?
我目前的解決方案包括:
- 使用 using 將檔案讀入 Numpy 記錄陣列(見下文)
np.fromfile() - 將其轉換為 Pandas DataFrame
- 將其轉換為 Polars DataFrame
# Data read in from file using np.fromfile()
data = np.array([(1, 2002, 2, 13, 0.3),
(2, 2005, 1, -10, 1.5),
(3, 2004, 2, 54, -0.12)],
dtype=[("id", "<i4"),("yr", "<u2"),("sex", "<u2"),("val1", "<i2"),("val2", "<f4")]
)
df = pl.from_pandas(pd.DataFrame(data))
df
id yr sex val1 val2
i32 u16 u16 i16 f32
1 2002 2 13 0.3
2 2005 1 -10 1.5
3 2004 2 54 -0.12
我嘗試使用ordata直接從 numpy 讀取 Polars ,但在這兩種情況下,我都會得到一個“物件”型別的單列資料框,我無法弄清楚如何將其分成單獨的列或轉換為結構。pl.DataFrame(data)pl.from_records(data)
uj5u.com熱心網友回復:
data = np.array([(1, 2002, 2, 13, 0.3),
(2, 2005, 1, -10, 1.5),
(3, 2004, 2, 54, -0.12)],
dtype=[("id", "<i4"),("yr", "<u2"),("sex", "<u2"),("val1", "<i2"),("val2", "<f4")]
)
pl.DataFrame(
{
field_name: data[field_name]
for field_name in data.dtype.fields
}
)
┌─────┬──────┬─────┬──────┬───────┐
│ id ┆ yr ┆ sex ┆ val1 ┆ val2 │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i32 ┆ u16 ┆ u16 ┆ i16 ┆ f32 │
╞═════╪══════╪═════╪══════╪═══════╡
│ 1 ┆ 2002 ┆ 2 ┆ 13 ┆ 0.3 │
├?????┼??????┼?????┼??????┼???????┤
│ 2 ┆ 2005 ┆ 1 ┆ -10 ┆ 1.5 │
├?????┼??????┼?????┼??????┼???????┤
│ 3 ┆ 2004 ┆ 2 ┆ 54 ┆ -0.12 │
└─────┴──────┴─────┴──────┴───────┘
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/468197.html
