在pandas中将列表的列拆分为多列

gojuced7  于 2023-03-21  发布在  其他
关注(0)|答案(3)|浏览(147)

类似的问题在Split a Pandas column of lists之前就已经提出过了,它处理的是将嵌套列表中的一列拆分为多列。
我的情况稍有不同。假设我有一个dframe,其中多个列包含嵌套列表,我正在寻找一个解决方案,将这些嵌套列表拆分为多个列。

** Dataframe :**

0                           1
0   [u, 8.000000e+00, 4.47e-01] [a0, 3.384351e-03, 1.23e-03]
1   [u, 8.000000e+00, 4.47e-01] [a0, 3.384351e-03, 1.23e-03]  
2   [u, 8.000000e+00, 5.53e-01] [a0, 4.897271e-03, 1.79e-03]

我尝试了Split a Pandas column of lists into multiple columns上面的帖子中建议的大多数方法:

pd.DataFrame(dframe[0].to_list(), columns=['u','val', 'err'])

基本上,它们对我不起作用,因为这些方法似乎只适用于一个专栏。
我所期待的是这样的:

输出:

0   1               2               3   4               5

0   u   8.000000e+00    4.47e-01        a0  3.384351e-03    1.23e-03
1   u   8.000000e+00    4.47e-01        a0  3.384351e-03    1.23e-03
2   u   8.000000e+00    5.53e-01        a0  4.897271e-03    1.79e-03

我有一个艰难的时间来解决这个问题的几天,我真的很感激你的回应。

nxagd54h

nxagd54h1#

您可以尝试:

out = df[[0, 1]].apply(lambda x: x[0] + x[1], axis=1, result_type="expand")
print(out)

图纸:

0    1      2   3         4        5
0  u  8.0  0.447  a0  0.003384  0.00123
1  u  8.0  0.447  a0  0.003384  0.00123
2  u  8.0  0.553  a0  0.004897  0.00179

编辑:

out = df[[0, 1]].apply(lambda x:  [v for lst in x for v in lst], axis=1, result_type="expand")
print(out)
bvjxkvbb

bvjxkvbb2#

通过itertools.chain函数(扁平化内部列表):

from itertools import chain

df = pd.DataFrame([chain.from_iterable(a) for a in df.values])

或者仅仅使用嵌套列表解析:
x一个一个一个一个x一个一个二个x

ssm49v7z

ssm49v7z3#

试试这个:
您可以将这些列表添加到一起并将它们传递到pd.DataFrame()

pd.DataFrame(df.sum(axis=1).tolist())

相关问题