Yun*_*ang 3 python explode dataframe pandas
我有一个如下所示的数据框:
import pandas as pd
df = pd.DataFrame({'a':[1,2,3], 'b':[[1,2,3],[1,2,3],[1,2,3]], 'c': [[4,5,6],[4,5,6],[4,5,6]]})
Run Code Online (Sandbox Code Playgroud)
我想用 b 列和 c 列爆炸数据框。我知道如果我们只使用一列那么我们可以做
df.explode('column_name')
Run Code Online (Sandbox Code Playgroud)
但是,我找不到使用两列的方法。所以这是所需的输出。
output = pd.DataFrame({'a':[1,1,1,2,2,2,3,3,3], 'b':[1,2,3,1,2,3,1,2,3], 'c': [4,5,6,4,5,6,4,5,6]})
Run Code Online (Sandbox Code Playgroud)
我试过了
df.explode(['a','b'])
Run Code Online (Sandbox Code Playgroud)
但它不起作用并给了我一个
ValueError: column must be a scalar.
Run Code Online (Sandbox Code Playgroud)
谢谢。
让我们试试
df=pd.concat([df[x].explode() for x in ['b','c']],axis=1).join(df[['a']]).reindex(columns=df.columns)
Out[179]:
a b c
0 1 1 4
0 1 2 5
0 1 3 6
1 2 1 4
1 2 2 5
1 2 3 6
2 3 1 4
2 3 2 5
2 3 3 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |