有一个数据帧包含一个实际上是一个列表的列:
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。在
试试这个:
它不使用reduce,而是使用groupby函数来展开行-假设a列是唯一的。在
相关问题 更多 >
编程相关推荐