我試圖一次系統地分解多列。這樣:
[
我希望最終輸出為:

我試過
df=df.explode('sauce', 'meal')
但這僅提供了在這種情況下爆炸的第一個元素(醬汁),而第二個沒有爆炸。
我也試過:
df=df.explode(['sauce', 'meal'])
但這段代碼提供
ValueError: column must be a scalar
錯誤。
我嘗試過這種方法,也嘗試過這種方法。沒有作業。
注意:不能應用于索引,水果列中有一些非唯一值。
uj5u.com熱心網友回復:
在熊貓 1.3.0 之前使用:
df.set_index(['fruits', 'veggies'])[['sauce', 'meal']].apply(pd.Series.explode).reset_index()
輸出:
fruits veggies sauce meal
0 x1 y2 a d
1 x1 y2 b e
2 x1 y2 c f
3 x2 y2 g k
4 x2 y2 h l
多列?嘗試:
df.set_index(df.columns.difference(['sauce', 'meal']).tolist())\
.apply(pd.Series.explode).reset_index()
輸出:
fruits veggies sauce meal
0 x1 y2 a d
1 x1 y2 b e
2 x1 y2 c f
3 x2 y2 g k
4 x2 y2 h l
uj5u.com熱心網友回復:
更新您的 Pandas 版本
# Setup
df = pd.DataFrame({'fruits': ['x1', 'x2'],
'veggies': ['y1', 'y2'],
'sauce': [list('abc'), list('gh')],
'meal': [list('def'), list('kl')]})
print(df)
# Output
fruits veggies sauce meal
0 x1 y1 [a, b, c] [d, e, f]
1 x2 y2 [g, h] [k, l]
爆炸(熊貓 1.3.5):
out = df.explode(['sauce', 'meal'])
print(out)
# Output
fruits veggies sauce meal
0 x1 y1 a d
0 x1 y1 b e
0 x1 y1 c f
1 x2 y2 g k
1 x2 y2 h l
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/393328.html
上一篇:如何簡化資料框的for回圈?
下一篇:放置apply方法的問題
