我有一个带有一列的数据框:
df=pd.DataFrame({quot;teams";:[[quot;SF";,“NYG";]用于范围(7)])
团队
0[SF,NYG]
1[SF,NYG]
2[SF,NYG]
3[旧金山,纽约州]
4[旧金山,纽约州]
5[旧金山,纽约州]
6[旧金山,纽约州]
如何将此列表列拆分为两列
预期结果:
team1 team2
0平方英尺纽约克
1平方英尺纽约币
2平方英尺纽约克
3平方英尺纽约克
4平方英尺纽约格
5平方英尺纽约克
6平方英尺纽约市
您可以将数据帧构造函数与创建的:列表一起使用到列表
将熊猫作为pd导入
d1={'teams':[['SF','NYG'],['SF','NYG'],['SF','NYG'],
['SF',NYG'],['SF',NYG'],['SF',NYG'],['SF',NYG']}
df2=pd.数据帧(d1)
打印(df2)
团队
0[SF,NYG]
1[SF,NYG]
2[SF,NYG]
3[旧金山,纽约州]
4[旧金山,纽约州]
5[旧金山,纽约州]
6[旧金山,纽约州]
df2[['team1','team2']]=pd.DataFrame(df2.teams.tolist(),index=df2.index)
打印(df2)
第1组第2组
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
对于新的数据帧:
df3=pd.DataFrame(df2['teams'].to_list(),columns=['team1','team2']))
打印(df3)
第1组第2组
0平方英尺纽约克
1平方英尺纽约币
2平方英尺纽约克
3平方英尺纽约克
4平方英尺纽约格
5平方英尺纽约克
6平方英尺纽约市
使用apply(pd.Series)的解决方案速度非常慢:
#7k行
df2=pd.concat([df2]*1000).重置索引(drop=True)
At[121]:%timeit df2['teams'].apply(pd.Series)
每个回路1.79 s±52.5 ms(7次运行的平均值±标准偏差,每个回路1次)
At[122]on:%timeit pd.DataFrame(df2['teams'].to_list(),columns=['team1','team2'])
每个回路1.63 ms±54.3µs(7次运行的平均值±标准偏差,每个1000个回路)