zoukankan      html  css  js  c++  java
  • Python学习笔记:pandas爆炸函数之explode

    一、介绍

    通过 explode 可以实现列转行的功能。

    explode 这个爆炸方法只能处理列表、元组、Series等类型。

    二、实操

    # 创建测试集
    import pandas as pd
    df = pd.DataFrame({'Name':['吕布','貂蝉','赵云'],
                       'Hobby':[['打篮球','玩游戏','喝奶茶'],['敲代码','看电影'],['听音乐','健身']]})
    '''
      Name            Hobby
    0   吕布  [打篮球, 玩游戏, 喝奶茶]
    1   貂蝉       [敲代码, 看电影]
    2   赵云        [听音乐, 健身]
    '''
    
    # 原地爆炸!!!
    df.explode('Hobby')
    
    # 列表有重复值 可能存在重复行
    df.explode('Hobby').drop_duplicates().reset_index(drop=True)
    '''
      Name Hobby
    0   吕布   打篮球
    1   吕布   玩游戏
    2   吕布   喝奶茶
    3   貂蝉   敲代码
    4   貂蝉   看电影
    5   赵云   听音乐
    6   赵云    健身
    '''
    

    如果数据框中数据为非可爆炸的类型,则可提前进行分列操作。

    df2 = pd.DataFrame({'Name':['吕布','貂蝉','赵云'],
                       'Hobby':['打篮球,玩游戏,喝奶茶','敲代码,看电影','听音乐,健身']})
        
    df2.explode('Hobby') # Not Work
    df2['Hobby2'] = df2['Hobby'].str.split(',')
    # df2['Hobby2'] = df2['Hobby'].apply(lambda x: x.split(','))
    df2.explode('Hobby2')
    '''
      Name        Hobby Hobby2
    0   吕布  打篮球,玩游戏,喝奶茶    打篮球
    0   吕布  打篮球,玩游戏,喝奶茶    玩游戏
    0   吕布  打篮球,玩游戏,喝奶茶    喝奶茶
    1   貂蝉      敲代码,看电影    敲代码
    1   貂蝉      敲代码,看电影    看电影
    2   赵云       听音乐,健身    听音乐
    2   赵云       听音乐,健身     健身
    '''
    

    三、实践题

    • 列转行拆分爆炸
    import pandas as pd
    import numpy as np
    
    df = pd.read_excel(r'C:\Users\Hider\Desktop\data.xlsx')
    
    '''
       年级        姓名
    0   1  A1;B1;C1
    1   2  A2;B2;C2
    2   3  A3;B3;C3
    3   4  A4;B4;C4
    4   5  A5;B5;C5
    5   6  A6;B6;C6
    6   7  A7;B7;C7
    7   8  A8;B8;C8
    8   9  A9;B9;C9
    '''
    df.columns # Index(['年级', '姓名'], dtype='object')
    df['新列'] = df['姓名'].str.split(';')
    df1 = df.explode('新列')
    
    • 还原
    # 数据还原
    def func(df):
        x = ','.join(df.values)
        return x
    
    df2 = df1.groupby('年级').agg(func).reset_index()
    

    参考链接:pandas100个骚操作五:使用 explode 实现 pandas 列转行的 2 个常用技巧

    参考链接:python pandas包的爆炸函数explode

    参考链接:pandas.DataFrame.explode

  • 相关阅读:
    ZipHelper 压缩和解压帮助类
    搜索引擎索引数据结构和算法
    Api之Cors跨域以及其他跨域方式
    UML类图
    NetAnalyzer2016使用方法
    30分钟快速掌握AngularJs
    抖屏与收发各种类型文件
    NET Core RC2
    如何检测被锁住的Oracle存储过程及处理办法汇总(转)
    oracle spfile和pfile文件(转)
  • 原文地址:https://www.cnblogs.com/hider/p/15627064.html
Copyright © 2011-2022 走看看