盤點一個Pandas多列分組問題
回復(fù)“資源”即可獲贈Python學(xué)習(xí)資料
大家好,我是皮皮。
一、前言
前幾天在Python白銀交流群【在途中要勤奮的熏肉肉??】問了一道Pandas處理的問題,如下圖所示。

原始數(shù)據(jù)如下圖所示:

下面是她自己寫的代碼:
# df['name'] = df['name'].str.lower()
test['pid'] = test['pid'].astype(int)
test['arr0'] = test['arr0'].astype(str)
test['arr1'] = test['arr1'].astype(str)
test['arr2'] = test['arr2'].astype(str)
test['arr3'] = test['arr3'].astype(str)
aggregate_funcs = {
'arr0': lambda s: '-'.join(set(s)),
'arr1': lambda s: '-'.join(set(s)),
'arr2': lambda s: '-'.join(set(s)),
'arr3': lambda s: '-'.join(set(s)),
}
testdf = test.groupby(test['pid']).aggregate(aggregate_funcs)
print(testdf)
目前的大概思路如下:

二、實現(xiàn)過程
這里【月神】給了一份示例代碼,如下所示:
arr0_3 = ['arr0', 'arr1', 'arr2', 'arr3']
data[arr0_3] = data[arr0_3].astype(str)
data.groupby('pid')[arr0_3].agg(lambda x: x.drop_duplicates().str.cat(sep='-'))
運(yùn)行之后,結(jié)果如下圖所示:

沒想到還可以批量地做轉(zhuǎn)換,真是太強(qiáng)了!
順利地解決了粉絲的問題。

三、總結(jié)
大家好,我是皮皮。這篇文章主要盤點了一道使用Pandas處理數(shù)據(jù)的問題,文中針對該問題給出了具體的解析和代碼實現(xiàn),幫助粉絲順利解決了問題。
最后感謝粉絲【在途中要勤奮的熏肉肉??】提問,感謝【月神】給出的思路和代碼解析,感謝【dcpeng】、【貓藥師Kelly】等人參與學(xué)習(xí)交流。
小伙伴們,快快用實踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
------------------- End -------------------
往期精彩文章推薦:

歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點個【在看】行不行
評論
圖片
表情
