首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用str.split('',expand=true)将多值列分离为新列

不使用str.split('',expand=true)将多值列分离为新列
EN

Stack Overflow用户
提问于 2022-01-14 06:54:32
回答 1查看 38关注 0票数 1

我在csv中有下面的数据。

代码语言:javascript
复制
dataCenter,customer,companyID,UID,uba
dc1,customer1,companyID1,uid1,"uba1,uba2,uba3,uba4"
dc2,customer2,companyID1,uid2,"ubaA"
dc3,customer3,companyID3,uid3,"uba1,uba4"
dc4,customer4,companyID4,uid4,"uba1,uba2,uba5,uba6,uba10"

现在,我想将数据转换为下面的格式,将'uba‘列中的多个值分配给其他新列。

代码语言:javascript
复制
dataCenter,customer,companyID,UID,action1,action2,action3,action4,action5,...,
dc1,customer1,companyID1,uid1,uba1,uba2,uba3,uba4
dc2,customer2,companyID1,uid2,uba
dc3,customer3,companyID3,uid3,uba1,uba4
dc4,customer4,companyID4,uid4,uba1,uba2,uba5,uba6,uba10,uba11,uba12,uba13

我在下面试过了,但不起作用。

代码语言:javascript
复制
a = a.explode('uba')
a = pd.concat([a,pd.DataFrame(a.pop('uba').tolist(),index=a.index)],axis=1)

我不想使用str.split('',expand=True),因为当数据很大时,性能确实很差。

对我来说,还有其他好的选择吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-14 06:58:14

如果做到了,希望使用str.split('',expand=True),并且没有丢失的值是可能的,请使用列表理解:

代码语言:javascript
复制
a = pd.concat([a,pd.DataFrame([x.split(',') for x in a.pop('uba')],index=a.index).add_prefix('action')],axis=1)
print (a)
  dataCenter   customer   companyID   UID action0 action1 action2 action3  \
0        dc1  customer1  companyID1  uid1    uba1    uba2    uba3    uba4   
1        dc2  customer2  companyID1  uid2    ubaA    None    None    None   
2        dc3  customer3  companyID3  uid3    uba1    uba4    None    None   
3        dc4  customer4  companyID4  uid4    uba1    uba2    uba5    uba6   

  action4  
0    None  
1    None  
2    None  
3   uba10  

编辑:要处理第一个N值,请使用:

代码语言:javascript
复制
N = 2
a = pd.concat([a,pd.DataFrame([x.split(',', N)[:N] for x in a.pop('uba')],index=a.index).add_prefix('action')],axis=1)
print (a)
  dataCenter   customer   companyID   UID action0 action1
0        dc1  customer1  companyID1  uid1    uba1    uba2
1        dc2  customer2  companyID1  uid2    ubaA    None
2        dc3  customer3  companyID3  uid3    uba1    uba4
3        dc4  customer4  companyID4  uid4    uba1    uba2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70706988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档