Python学习笔记:pandas爆炸函数之explode
生活随笔
收集整理的這篇文章主要介紹了
Python学习笔记:pandas爆炸函数之explode
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、介紹
通過 explode 可以實(shí)現(xiàn)列轉(zhuǎn)行的功能。
explode 這個(gè)爆炸方法只能處理列表、元組、Series等類型。
二、實(shí)操
# 創(chuàng)建測試集
import pandas as pd
df = pd.DataFrame({'Name':['呂布','貂蟬','趙云'],
'Hobby':[['打籃球','玩游戲','喝奶茶'],['敲代碼','看電影'],['聽音樂','健身']]})
'''
Name Hobby
0 呂布 [打籃球, 玩游戲, 喝奶茶]
1 貂蟬 [敲代碼, 看電影]
2 趙云 [聽音樂, 健身]
'''
# 原地爆炸!!!
df.explode('Hobby')
# 列表有重復(fù)值 可能存在重復(fù)行
df.explode('Hobby').drop_duplicates().reset_index(drop=True)
'''
Name Hobby
0 呂布 打籃球
1 呂布 玩游戲
2 呂布 喝奶茶
3 貂蟬 敲代碼
4 貂蟬 看電影
5 趙云 聽音樂
6 趙云 健身
'''
如果數(shù)據(jù)框中數(shù)據(jù)為非可爆炸的類型,則可提前進(jìn)行分列操作。
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 趙云 聽音樂,健身 健身
'''
三、實(shí)踐題
列轉(zhuǎn)行拆分爆炸
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('新列')
還原
# 數(shù)據(jù)還原
def func(df):
x = ','.join(df.values)
return x
df2 = df1.groupby('年級').agg(func).reset_index()
參考鏈接:pandas100個(gè)騷操作五:使用 explode 實(shí)現(xiàn) pandas 列轉(zhuǎn)行的 2 個(gè)常用技巧
參考鏈接:python pandas包的爆炸函數(shù)explode
參考鏈接:pandas.DataFrame.explode
總結(jié)
以上是生活随笔為你收集整理的Python学习笔记:pandas爆炸函数之explode的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rust大油田分解机_低渗油田油井反向调
- 下一篇: 开关电源仿真与设计基于spice 第2版