关于python:pandas-将函数应用到列qbit

8次阅读

共计 850 个字符,预计需要花费 3 分钟才能阅读完成。

前言

  • 环境

    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

正文完
 0