python一列拆分成多列_python – Pandas将列列分成多列

您可以将DataFrame构造函数与通过values转换为numpy数组创建的列表一起使用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)

teams

0 [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 team2

0 [SF, NYG] SF NYG

1 [SF, NYG] SF NYG

2 [SF, NYG] SF NYG

3 [SF, NYG] SF NYG

4 [SF, NYG] SF NYG

5 [SF, NYG] SF NYG

6 [SF, NYG] SF NYG

对于新的DataFrame:

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

print (df3)

team1 team2

0 SF NYG

1 SF NYG

2 SF NYG

3 SF NYG

4 SF NYG

5 SF NYG

6 SF NYG

apply(pd.Series)的解决方案非常慢:

#7k rows

df2 = 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 loop

In [90]: %timeit pd.DataFrame(df2['teams'].values.tolist(), columns=['team1','team2'])

1000 loops, best of 3: 820 ?s per loop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值