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

python pandas dataframe拆分行(某些行一行拆成多行)

python pandas dataframe拆分行(某些行一行拆成多行)

HUWWW 2018-07-23 19:15:48
比如有数据A B C1 1,2 32 3 33 4,5,6 3这样一张表,要按B将他拆分为:A B C1 1 31 2 32 3 33 4 31 5 31 6 3请问该如何操作
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

简单循环

最简单的方式就是循环拆分一下呗。先上最简单方法:

import pandas as pd
df = pd.DataFrame({'A':['1','2','3'],'B':['1','2,3','4,5,6'],'C':['3','3','3']})
result = pd.DataFrame(columns=['A','B','C'])
print(df,'\n')for i in df.itertuples():    for j in i[2].split(','):
        result = result.append({'A':i[1],'B':j,'C':i[3]},ignore_index=True)        
print(result)

输出:

   A      B  C0  1      1  31  2    2,3  32  3  4,5,6  3 

   A  B  C0  1  1  31  2  2  32  2  3  33  3  4  34  3  5  35  3  6  3

更高效的方法

采用expand直接进行扩展

df = pd.DataFrame({'A':['1','2','3'],'B':['1','2,3','4,5,6'],'C':['3','3','3']})
df = (df.set_index(['A','C'])['B']
       .str.split(',', expand=True)
       .stack()
       .reset_index(level=2, drop=True)
       .reset_index(name='B'))
print(df)


查看完整回答
反对 回复 2018-07-29
  • 1 回答
  • 0 关注
  • 5603 浏览
慕课专栏
更多

添加回答

举报

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