首页 > 解决方案 > 如何处理df中多列内的多个列表?

问题描述

我有一个这样的df

                                            data_list
0   [['13878018', '13878274'], ['54211', '54212'], ['AARTIIND21JUL850PE', 'AARTIIND21JUL860CE'], ['AARTIIND', 'AARTIIND']]
1   [['13099778', '13100034'], ['51171', '51172'], ['ABFRL21JUL210PE', 'ABFRL21JUL215CE'], ['ABFRL', 'ABFRL']]
2   [['13910018', '13910274'], ['54336', '54337'], ['ACC21JUL1980PE', 'ACC21JUL2000CE'], ['ACC', 'ACC']]

我想把它转换成

    name           token    ext_t      symbol
0   AARTIIND    13878018    54211       AARTIIND21JUL850PE
1   AARTIIND    13878274    54212       AARTIIND21JUL860CE
2   ABFRL       13099778    51171       ABFRL21JUL210PE
3   ABFRL       13100034    51172       ABFRL21JUL215CE
4   ACC         13910018    54336       ACC21JUL1980PE
5   ACC         13910274    54337       ACC21JUL2000CE

我怎样才能做到这一点?

我尝试应用 pd.series 并得到这样的输出

                      0               1                                               2                         3
0  [13878018, 13878274]  [54211, 54212]        [AARTIIND21JUL850PE, AARTIIND21JUL860CE]      [AARTIIND, AARTIIND]
1  [13099778, 13100034]  [51171, 51172]              [ABFRL21JUL210PE, ABFRL21JUL215CE]            [ABFRL, ABFRL]
2  [13910018, 13910274]  [54336, 54337]                [ACC21JUL1980PE, ACC21JUL2000CE]                [ACC, ACC]

我不确定下一步如何进行。有人可以帮忙吗?

标签: pythonpandasdataframe

解决方案


尝试通过DataFrame()方法和apply()

out=pd.DataFrame(df['data_list'].tolist()).apply(pd.Series.explode)
#OR(you can also use agg() method in place of apply() method)
out=pd.DataFrame(df['data_list'].tolist()).agg(pd.Series.explode)

最后:

out.columns=['token','ext_t','symbol','name']

现在,如果您打印out,您将获得预期的输出


推荐阅读