我有一个看起来像这样的 DataFrame:
id t_l
0 100 [('a', 1), ('b', 2)]
1 151 [('x', 4), ('y', 3)]
我需要返回一个如下所示的 DataFrame:
id f g
0 100 'a' 1
1 'b' 2
2 151 'x' 4
3 'y' 3
最好的方法是什么?
请您参考如下方法:
编辑: @ALollz 很好地说明了 np.concatenate 与 chain.from_iterable(df.t_l) 的速度。我 %timeit 是真的。因此,我使用 from_iterable(df.t_l)
from itertools import chain
pd.DataFrame(chain.from_iterable(df.t_l), index=np.repeat(df.id, df.t_l.str.len()), \
columns=['f', 'g']).reset_index()
原创:
我会构造一个新的 df,使用 np.concatenate 作为数据,使用 np.repeat 作为索引。最后,reset_index将id放回column
pd.DataFrame(np.concatenate(df.t_l), index=np.repeat(df.id, df.t_l.str.len()), \
columns=['f', 'g']).reset_index()
Out[596]:
id f g
0 100 a 1
1 100 b 2
2 151 x 4
3 151 y 3
