前言

  • 环境

    Python 3.8Pandas 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