边走边清理,效果很好。
df = pd.DataFrame({'C1': [["A"], ["A"], ["A","B"], ["B"], ["B"], ["A","B","B"], ["A","A"]],
'C2': [[1], [1], [1,2], [2], [2], [1,2,2], [1,3]],
'C3': ['s1', 's2', 's3', 's4', 's5', 's6', 's7'],
'C4': [[123], 321, [777,111], 145, [990], [124,125,765], 119],
'C5': ['t1', 't2', 't3', 't4', 't5', 't6', 't7']})
df.explode("C1").reset_index().drop("index",1).explode("C2").reset_index()\
.drop("index",1).explode("C4").reset_index().drop("index",1)
output
C1 C2 C3 C4 C5
0 A 1 s1 123 t1
1 A 1 s2 321 t2
2 A 1 s3 777 t3
3 A 1 s3 111 t3
4 A 2 s3 777 t3
5 A 2 s3 111 t3
6 B 1 s3 777 t3
7 B 1 s3 111 t3
8 B 2 s3 777 t3
9 B 2 s3 111 t3