Python 从数据帧中的多个列表列获取元素

Python 从数据帧中的多个列表列获取元素,python,pandas,Python,Pandas,我有这样一个数据帧: A B C [1,2,3] ['a','b','c'] ['aa', 'bb', 'cc'] [4,5,6] ['d','e','f'] ['dd', 'ee', 'ff'] [7,8,9] ['g','h','i'] ['gg', 'hh', 'ii'] 我想将这些列中的值组合如下: [[[1,'a', 'aa'], [2,'b','bb'], [3, 'c', 'c

我有这样一个数据帧:

     A            B             C
  [1,2,3]    ['a','b','c']    ['aa', 'bb', 'cc']
  [4,5,6]    ['d','e','f']    ['dd', 'ee', 'ff']
  [7,8,9]    ['g','h','i']    ['gg', 'hh', 'ii']
我想将这些列中的值组合如下:

[[[1,'a', 'aa'], [2,'b','bb'], [3, 'c', 'cc']], [[4,'d','dd'], [5,'e', 'ee'], [6,'f','ff']], [[7,'g','gg'], [8,'h','hh'], [9,'i','ii']]]
我的想法是将每个列更改为如下列表(这将给出列表列表):

first=df['A'].values.tolist()
#其他列也是如此


然后压缩所有列表并遍历它们,从每个列表中获取相应的值,并根据输出格式创建一个新列表。但是,我相信有比我更好的解决办法。有人能帮我吗?

IIUC
explode
with
groupby

pd.concat([df[[x]].explode(x) for x in df.columns],axis=1)\
     .apply(lambda x : x.tolist(),axis=1).groupby(level=0).agg(list).tolist()
Out[366]: 
[[[1, 'a', 'aa'], [2, 'b', 'bb'], [3, 'c', 'cc']],
 [[4, 'd', 'dd'], [5, 'e', 'ee'], [6, 'f', 'ff']],
 [[7, 'g', 'gg'], [8, 'h', 'hh'], [9, 'i', 'ii']]]

使用
应用的极端解决方案

df.apply(lambda x: list(zip(*x.to_list())), axis=1).to_list()
输出:

[[(1, 'a', 'aa'), (2, 'b', 'bb'), (3, 'c', 'cc')],
 [(4, 'd', 'dd'), (5, 'e', 'ee'), (6, 'f', 'ff')],
 [(7, 'g', 'gg'), (8, 'h', 'hh'), (9, 'i', 'ii')]]

单元格是否总是长度为3?不,这只是一个示例。但是,列表中的每一列都有相同数量的元素。您的意思是每一行都有相同数量的元素吗?是的,每一行都有相同数量的元素。如果每一单元格中每个子列表的列大小不一样,我的解决方案就不起作用了。我将删除我的解决方案。