为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫将列表分成多列

熊猫将列表分成多列

缥缈止盈 2019-06-18 12:53:48
熊猫将列表分成多列我有一个熊猫数据框架,列如下所示:`In [207]:df2.teamsOut[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组。
查看完整描述

3 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

你可以用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


查看完整回答
反对 回复 2019-06-18
?
函数式编程

TA贡献1807条经验 获得超9个赞

更简单的解决方案:

pd.DataFrame(df2.teams.tolist(), columns=['team1', 'team2'])

收益,

  team1 team2-------------0    SF   NYG1    SF   NYG2    SF   NYG3    SF   NYG4    SF   NYG5    SF   NYG6
      SF   NYG7    SF   NYG

如果希望拆分分隔字符串的列而不是列表,也可以这样做:

pd.DataFrame(df.teams.str.split('<delim>', expand=True).values,
             columns=['team1', 'team2'])


查看完整回答
反对 回复 2019-06-18
?
大话西游666

TA贡献1817条经验 获得超14个赞

似乎有一种语法上更简单的方法,因此更容易记住,而不是建议的解决方案。我假设该列在dataframedf中称为“meta”:

df2 = pd.DataFrame(df['meta'].str.split().values.tolist())


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 591 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信