将包含列表的列拆分为熊猫中的不同行

Ale*_*hán 9 python dataframe pandas

我在熊猫中有一个像这样的数据框:

id     info
1      [1,2]
2      [3]
3      []
Run Code Online (Sandbox Code Playgroud)

我想把它分成不同的行,如下所示:

id     info
1      1 
1      2 
2      3 
3      NaN
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

pgn*_*ngp 7

你可以试试这个:

>>> import pandas as pd
>>> df = pd.DataFrame({'id': [1,2,3], 'info': [[1,2],[3],[]]})
>>> s = df.apply(lambda x: pd.Series(x['info']), axis=1).stack().reset_index(level=1, drop=True)
>>> s.name = 'info'
>>> df2 = df.drop('info', axis=1).join(s)
>>> df2['info'] = pd.Series(df2['info'], dtype=object)
>>> df2
   id info
0   1    1
0   1    2
1   2    3
2   3  NaN
Run Code Online (Sandbox Code Playgroud)

类似的问题发布在这里