如何使用两列来区分熊猫数据框中的数据点

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)

谢谢。

WeN*_*Ben 6

让我们试试

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)