在 Pandas 中将一列列表扩展为多行

Don*_*n P 4 python dataframe pandas

我有一个 Pandas 数据框,其中一列是一个列表。我想扩展这个列表。

我怎样才能做到这一点?

首先:

0 [{ first: 'jon', last: 'McSmith' }, { first: 'Jennifer', last: 'Foobar'}]
1 [{ first: 'dan', last: 'Raizman' }, { first: 'Alden', last: 'Lowe'}]

Name: players, dtype: object
Run Code Online (Sandbox Code Playgroud)

结尾:

   first         last
--------------------------
0  Jon           McSmith
1  Jennifer      Foobar
2  Dan           Raizman
3  Alden         Lowe
Run Code Online (Sandbox Code Playgroud)

Shu*_*rma 7

用于水平np.hstack堆叠列中的列表players并创建一个新的数据框:

df1 = pd.DataFrame(np.hstack(df['players']).tolist())
Run Code Online (Sandbox Code Playgroud)

或者使用Series.explode(在熊猫版本 >= 中可用0.25),

df1 = pd.DataFrame(df['players'].explode().tolist())
Run Code Online (Sandbox Code Playgroud)

使用itertools.chain@cs95 建议的另一种选择

from itertools import chain

df1 = pd.DataFrame(chain.from_iterable(df['players']))
Run Code Online (Sandbox Code Playgroud)

结果:

print(df1)

      first     last
0       jon  McSmith
1  Jennifer   Foobar
2       dan  Raizman
3     Alden     Lowe
Run Code Online (Sandbox Code Playgroud)

  • 不是我,这是一个很好的答案。剥皮的方法有很多,但堆栈或连接是链接子列表的最快方法。另一个选择是 itertools.chain。 (2认同)