我必須使用僅在 1 列上支持explode()的pandas 1.2.5 。資料框有幾列,每列可以有一個值或一個串列。在一行中,幾列可以有串列,但保證該行中的所有串列長度相同。使資料框爆炸的最佳方法是什么?
我的意思是制作這個資料框的例子:
| 一種 | b |
|---|---|
| 1 | 1 |
| 20 | [10,20,30] |
| [100,200,300] | [100,200,300] |
看起來像這個資料框:
| 一種 | b |
|---|---|
| 1 | 1 |
| 20 | 10 |
| 20 | 20 |
| 20 | 30 |
| 100 | 100 |
| 200 | 200 |
| 300 | 300 |
uj5u.com熱心網友回復:
由于您使用的是舊版 pandas 并且您的列沒有匹配的元素計數,因此多列爆炸不是可用選項。這是一種方法,它涉及將資料框重新整形為一系列以使用單列,然后使用 explode創建新索引并重新整形回資料框groupbycumcount
s = df.stack().explode()
i = s.groupby(level=[0, 1]).cumcount()
s.to_frame().set_index(i, append=True)[0].unstack(1).ffill().droplevel(1)
結果
a b
0 1 1
1 20 10
1 20 20
1 20 30
2 100 100
2 200 200
2 300 300
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450098.html
標籤:python-3.x 熊猫 数据框
上一篇:如何在資料框中向量化這個計算
