Python实现行转列?!超简单,赶快get起来
前言
數(shù)據(jù)的行轉(zhuǎn)列操作,在實際工作過程中應(yīng)用非常廣泛。
由于不同人員、不同部門對數(shù)據(jù)結(jié)構(gòu)的認識是不大相同的,尤其是從基層人員手里拿到的數(shù)據(jù),更是五花八門,橫七豎八。
比如有這樣一張成績表:
乍一看,好像沒毛病啊!!
然鵝鵝鵝,當需求:=簡單計算一下每個人的總分吧!來臨的時候。我腦海中不禁浮想起了:
安排
# 遇事不要慌,先導(dǎo)個包吧 import pandas as pd import numpy as np#?造假數(shù)據(jù) data = {'name':['嚴小樣兒','嚴小樣兒','嚴小樣兒','才華橫豎都溢','才華橫豎都溢','才華橫豎都溢','幽蘭幽香','幽蘭幽香','幽蘭幽香'],'subject':['Python','C','SQL','Python','C','SQL','Python','C','SQL'],'score':[95,60,95,96,95,80,99,94,88]}# 生成df df = pd.DataFrame(data) df使用pivot方法即可完成行轉(zhuǎn)列哦~語法如下:
不要高興的太早,遇到重復(fù)值就麻煩了!少俠請看:
別急別急,去個重不就可以了嗎?!
方法二:數(shù)據(jù)透視表
聚合
剛剛說了,要求每個人的總分,其實使用透視表就可以完成。
不過,稍微動動腦筋哦。遇到重復(fù)值數(shù)據(jù)的話,只能使用下面的方法一,去重后的數(shù)據(jù)集,方法一,二都支持。
計算每個人的總分,語法如下:
# 重復(fù)數(shù)據(jù)集也可以 df_pivot = pd.pivot_table(df1,index='name',columns='subject',values='score',aggfunc={'score':'max'}) #?增加一個新列:Total df_pivot['Total'] = df_pivot.apply(lambda x:np.sum(x),axis = 1) df_pivot方法二,必須是去重后的數(shù)據(jù)集,否則會出現(xiàn)計算錯誤。
# 使用去重數(shù)據(jù)集才可以 pd.pivot_table(df,index='name',values='score',aggfunc='sum')# 使用join方法把總分列加進去。 total = pd.pivot_table(df,index='name',values='score',aggfunc='sum') pd.pivot_table(df,index='name',columns='subject',values='score').join(total)--需求方:算是算出來了,可是,這個score看著怪怪的,能不能改成“總分”呢?
--嚴小樣兒:我改(卑微)!安排~
行轉(zhuǎn)列,就這樣講完了,大家趕快動手實踐一下吧。那么,如何列轉(zhuǎn)行呢?!
下
期
見
!
各位伙伴們好,詹帥本帥假期搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達式(長文系列第②篇)
牛逼!Python函數(shù)和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結(jié)
以上是生活随笔為你收集整理的Python实现行转列?!超简单,赶快get起来的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openpyxl库,1秒合并多张表格并设
- 下一篇: 6行代码!用Python将PDF转为wo