前言
環境
Python 3.8 Pandas 1.4.4
正文
初始化資料
>>> import pandas as pd >>> df0 = pd.DataFrame(data=[{'name': '張三', 'tag': '跑步', 'title': 'MAN'}, {'name': '王二', 'tag': '足球;電影', 'title': '舅舅;舅舅'}] ) >>> df0 name tag title 0 張三 跑步 MAN 1 王二 足球;電影 舅舅;舅舅
定義去重函式
def UniqItems(items: str): iset = set() for item in items.split(';'): item = item.strip() if not item: continue iset.add(item) return ';'.join(iset)
單列去重(將函式應用到某列的單元格)
>>> df1 = df0.copy() >>> df1['title'] = df1['title'].map(UniqItems) >>> df1 name tag title 0 張三 跑步 MAN 1 王二 足球;電影 舅舅
所有列去重(將函式應用到所有單元格)
>>> df1 = df0.copy() >>> df1 name tag title 0 張三 跑步 MAN 1 王二 足球;電影 舅舅;舅舅 >>> df1.applymap(UniqItems) name tag title 0 張三 跑步 MAN 1 王二 足球;電影 舅舅
指定部分列去重(將函式應用到部分列的單元格)
>>> dfTmp = df0[['tag', 'title']] >>> dfTmp tag title 0 跑步 MAN 1 足球;電影 舅舅;舅舅 >>> dfTmp = dfTmp.applymap(UniqItems) >>> dfTmp tag title 0 跑步 MAN 1 足球;電影 舅舅 >>> df1 = df0.copy() >>> df1 name tag title 0 張三 跑步 MAN 1 王二 足球;電影 舅舅;舅舅 >>> df1.update(dfTmp) >>> df1 name tag title 0 張三 跑步 MAN 1 王二 足球;電影 舅舅
本文出自 qbit snap