Skip to main content
 首页 » 编程设计

python之MultiIndex 的 Pandas 元组列表

2025年05月04日15tuyile006

我有一个看起来像这样的 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