问题描述
我有:
df = pd.DataFrame(
{
"A": [["a","b","c"],["d"]],"B": [[1,2,3],[4]],"C": [["abc"],["def"]]
}
)
A B C
0 [a,b,c] [1,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")
但是它创建了一个“组合产品”并保留了索引。
解决方法
您可以将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
,
可能有一个更简单的解决方案,但是您可以立即尝试
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