如何根据Pandas中的列“展开”行

2024-05-13 18:28:38 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个数据帧包含一个实际上是一个列表的列:

import pandas as pd
df = pd.DataFrame([
    {"a":"a1", "b":"['b11','b12','b13']"},
    {"a":"a2", "b":"['b21','b22','b23']"}
])

只是:

^{pr2}$

我怎么能像这样展开它:

    a    b
0  a1  b11
1  a1  b12
2  a1  b13
3  a2  b21
4  a2  b22
5  a2  b23

我的第一个猜测是:

from functools import reduce
vls = df.apply(lambda x: [{'a': x['a'], 'b': b} for b in list(eval(x['b']))], axis=1).values
df = pd.DataFrame(reduce(lambda x, y: x + y, vls))

它是可行的,但是对于我的一小部分数据集(大约1000行)需要花费大量的时间,而且我必须将其应用于数百万行。在

我想知道是否有更好的方法只使用熊猫api。在


Tags: 数据importa2reducedataframedfa1pd