我想弄清楚如何將我的 csv 行加載到嵌套陣列中。
例如,我的 csv 檔案:
| ID | a1 | a2 | b1 | b2 | c1 | c2 | d1 | d2 |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 3 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| ... |
我如何將它變成這樣的陣列:
對于每一行,我想將每兩列分組到下面顯示的內容中:
[
[[1, 2], [3, 4], [5, 6], [7, 8]], #row 1
[[9, 10], [11, 12], [13, 14], [15, 16]], #row 2
[[17, 18], [19, 20], [21, 22], [23, 24]], #row 3
...
]
uj5u.com熱心網友回復:
對于沒有id列使用的成對所有列的嵌套串列:
df = df.drop('id', axis=1)
L = np.reshape(df.to_numpy(), (len(df.index),len(df.columns) // 2,2)).tolist()
print (L)
[[[1, 2], [3, 4], [5, 6], [7, 8]],
[[9, 10], [11, 12], [13, 14], [15, 16]],
[[17, 18], [19, 20], [21, 22], [23, 24]]]
uj5u.com熱心網友回復:
按索引對資料幀進行分組,即level=0(如果資料幀中沒有任何索引的重復條目,則可以避免),然后對于每個組,過濾資料幀以獲取一對列,然后list對axis=1每個過濾后的資料幀應用,最后將所有這些連接起來axis=1,然后再次應用串列axis=1,最后呼叫tolist():
(df.groupby(level=0)
.apply(lambda x:pd.concat([x.filter(like=c)
.apply(list, axis=1) for c in 'abcd'], axis=1)
)
.apply(list, axis=1)
.tolist()
)
輸出:
[
[
[1, 2], [3, 4], [5, 6], [7, 8]
],
[
[9, 10], [11, 12], [13, 14], [15, 16]
],
[
[17, 18], [19, 20], [21, 22], [23, 24]
]
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/345066.html
上一篇:洗掉與字串匹配的PandasDataFrame行并維護索引
下一篇:如何根據標準熊貓更改值
