比如有數(shù)據(jù)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請(qǐng)問(wèn)該如何操作
1 回答

拉風(fēng)的咖菲貓
TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
簡(jiǎn)單循環(huán)
最簡(jiǎn)單的方式就是循環(huán)拆分一下唄。先上最簡(jiǎn)單方法:
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
直接進(jìn)行擴(kuò)展
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)
添加回答
舉報(bào)
0/150
提交
取消