我有:
df = pd.DataFrame(
{
"A": [["a", "b", "c"], ["d"]],
"B": [[1, 2, 3], [4]],
"C": [["abc"], ["def"]]
}
)
A B C
0 [a, b, c] [1, 2, 3] [abc]
1 [d] [4] [def]
我的预期输出是:
A B C
0 a 1 abc
1 b 2 abc
2 c 3 abc
3 d 4 def
我尝试过
df = df.explode("A")
df = df.explode("B")
但是它创建了一个“组合产品”并保留了索引。
答案 0 :(得分:5)
您可以将df.apply
与pd.Series.explode
一起使用
df.apply(pd.Series.explode) #.reset_index(drop=True) If required.
A B C
0 a 1 abc
0 b 2 abc
0 c 3 abc
1 d 4 def
答案 1 :(得分:2)
可能有一个更简单的解决方案,但是您可以立即尝试
newdf=df.explode("A")
newdf['B'] = df.explode("B")['B']
newdf['C'] = newdf['C'].str[0]
newdf.reset_index(drop=True)
输出
A B C
0 a 1 abc
1 b 2 abc
2 c 3 abc
3 d 4 def