熊猫将列表分成多列

熊猫将列表分成多列

我有一个熊猫数据框架,列如下所示:


`

In [207]:df2.teams

Out[207]: 

0         [SF, NYG]

1         [SF, NYG]

2         [SF, NYG]

3         [SF, NYG]

4         [SF, NYG]

5         [SF, NYG]

6         [SF, NYG]

7         [SF, NYG]

`

我需要使用熊猫将这一列表分成两个列,分别命名为第1组和第2组。


缥缈止盈
浏览 592回答 3
3回答

叮当猫咪

你可以用DataFrame构造器lists通过转换为numpy array通过values带着tolist:import pandas as pd d1 = {'teams': [['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG'],                 ['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG']]}df2 = pd.DataFrame(d1)print (df2)        teams0  [SF, NYG]1  [SF, NYG]2  [SF, NYG]3  [SF, NYG]4  [SF, NYG]5  [SF, NYG]6  [SF, NYG]df2[['team1','team2']] = pd.DataFrame(df2.teams.values.tolist(), index= df2.index)print (df2)        teams team1 team20  [SF, NYG]    SF   NYG1  [SF, NYG]    SF   NYG2  [SF, NYG]    SF   NYG3  [SF, NYG]            SF   NYG4  [SF, NYG]    SF   NYG5  [SF, NYG]    SF   NYG6  [SF, NYG]    SF   NYG新的DataFrame:df3 = pd.DataFrame(df2['teams'].values.tolist(), columns=['team1','team2'])print (df3)   team1 team20    SF   NYG1    SF   NYG2    SF   NYG3    SF   NYG4    SF   NYG5    SF   NYG6    SF   NYG溶液apply(pd.Series)非常慢:#7k rowsdf2 = pd.concat([df2]*1000).reset_index(drop=True)In [89]: %timeit df2['teams'].apply(pd.Series)1 loop, best of 3: 1.15 s per  loopIn [90]: %timeit pd.DataFrame(df2['teams'].values.tolist(), columns=['team1','team2'])1000 loops, best of 3: 820 µs per loop

函数式编程

更简单的解决方案:pd.DataFrame(df2.teams.tolist(),&nbsp;columns=['team1',&nbsp;'team2'])收益,&nbsp;&nbsp;team1&nbsp;team2-------------0&nbsp;&nbsp;&nbsp;&nbsp;SF&nbsp;&nbsp;&nbsp;NYG1&nbsp;&nbsp;&nbsp;&nbsp;SF&nbsp;&nbsp;&nbsp;NYG2&nbsp;&nbsp;&nbsp;&nbsp;SF&nbsp;&nbsp;&nbsp;NYG3&nbsp;&nbsp;&nbsp;&nbsp;SF&nbsp;&nbsp;&nbsp;NYG4&nbsp;&nbsp;&nbsp;&nbsp;SF&nbsp;&nbsp;&nbsp;NYG5&nbsp;&nbsp;&nbsp;&nbsp;SF&nbsp;&nbsp;&nbsp;NYG6 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SF&nbsp;&nbsp;&nbsp;NYG7&nbsp;&nbsp;&nbsp;&nbsp;SF&nbsp;&nbsp;&nbsp;NYG如果希望拆分分隔字符串的列而不是列表,也可以这样做:pd.DataFrame(df.teams.str.split('<delim>',&nbsp;expand=True).values, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;columns=['team1',&nbsp;'team2'])

大话西游666

似乎有一种语法上更简单的方法,因此更容易记住,而不是建议的解决方案。我假设该列在dataframedf中称为“meta”:df2&nbsp;=&nbsp;pd.DataFrame(df['meta'].str.split().values.tolist())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python