1 回答

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
我認(rèn)為您的輸入數(shù)據(jù)存在一些差異,例如第一組最終有 9 個(gè)值,或者在第二組中您在不同行的同一位置有值(0 除外)。
無(wú)論如何,這應(yīng)該做你想做的,首先str.split是每個(gè)逗號(hào)的“my_string”列并展開,用于mask用 nan 替換 0,groupby在兩列上執(zhí)行 a,保持first值(不是 nan)可用,如果有的話,fillna0 是沒有值的, agg用于join取回字符串和reset_index
df_ = (df['my_string'].str.split(',', expand=True)
.mask(lambda x: x.eq('0'))
.groupby([df['HOUSEID'], df['PERSONID']])
.first()
.fillna('0')
.agg(','.join, axis=1)
.reset_index(name='my_string_agg')
)
print (df_)
HOUSEID PERSONID my_string_agg
0 20000017 1 53,53,53,1-100,100,100-11,12,12
1 20000017 2 1-100-43,43,82-100-41,41,53,53,0,0
2 20000231 1 41-100,100-41,41,41-100,100-1,0,0,0
添加回答
舉報(bào)