pandas使用之寬表變窄表的實(shí)現(xiàn)
我就廢話不多說了,還是直接看代碼吧!
import pandas as pd
# 偽造一些數(shù)據(jù)
fake_data = {'subject':['math', 'english'],
'A': [88, 90],
'B': [70, 80],
'C': [60, 78]}
# 寬表
test = pd.DataFrame(fake_data, columns=['subject', 'A', 'B', 'C'])
test
subject A B C
0 math 88 70 60
1 english 90 80 78
# 轉(zhuǎn)換為窄表
pd.melt(test, id_vars=['subject'])
subject variable value
0 math A 88
1 english A 90
2 math B 70
3 english B 80
4 math C 60
5 english C 78
補(bǔ)充知識:pandas從單條目數(shù)據(jù)集生成寬表
需求
場景
從醫(yī)院數(shù)據(jù)庫中導(dǎo)出了大量的體檢數(shù)據(jù),但體檢數(shù)據(jù)表中,每一行代表某人某次體檢的某一項(xiàng)體檢的結(jié)果。目的想將每一個人的每一次體檢結(jié)果作為一行存儲,每一列為體檢項(xiàng)。
示例
| StuID | Type | Num | |
|---|---|---|---|
| 0 | 111021 | Math | 89 |
| 1 | 111021 | English | 93 |
| 2 | 312983 | English | 91 |
| 3 | 314621 | English | 82 |
| 4 | 314621 | Math | 92 |
| 5 | 112341 | Math | 82 |
目的:轉(zhuǎn)換成如下表格
| StuID | English | Math | |
|---|---|---|---|
| 0 | 111021 | 93 | 89 |
| 1 | 312983 | 91 | NaN |
| 2 | 314621 | 82 | 92 |
| 3 | 112341 | NaN | 82 |
方案一

具體代碼如下
#將'B'列的類別調(diào)整為行。
#1
num = df[~df.duplicated(subset=['StuID'])].loc[:,'StuID'].to_list()
#2
result_df = pd.DataFrame({'StuID': np.array(num)},columns=['StuID','English','Math'])
#3
for i in df.index:
t = df.loc[i,'Type']
num = df.loc[i,'StuID']
result_df.loc[result_df['StuID'] == num,[t]] = df.loc[i,'Num']
print(result_df)
結(jié)果

以上這篇pandas使用之寬表變窄表的實(shí)現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python列表推導(dǎo)式與生成器表達(dá)式用法示例
這篇文章主要介紹了Python列表推導(dǎo)式與生成器表達(dá)式用法,簡單描述了Python列表推導(dǎo)式與生成器表達(dá)式的概念、功能,并結(jié)合具體實(shí)例形式分析了Python列表推導(dǎo)式與生成器表達(dá)式簡單使用技巧,需要的朋友可以參考下2018-02-02
Python 實(shí)現(xiàn)取多維數(shù)組第n維的前幾位
今天小編就為大家分享一篇Python 實(shí)現(xiàn)取多維數(shù)組第n維的前幾位,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Python ValueError: invalid literal for int() with base 10 實(shí)用
這篇文章主要介紹了Python ValueError: invalid literal for int() with base 10 實(shí)用解決方法,本文使用了一個取巧方法解決了這個問題,需要的朋友可以參考下2015-06-06
Python實(shí)現(xiàn)Mysql全量數(shù)據(jù)同步的腳本分享
這篇文章主要為大家詳細(xì)介紹了基于Python如何實(shí)現(xiàn)Mysql全量數(shù)據(jù)同步的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-06-06
python cx_Oracle模塊的安裝和使用詳細(xì)介紹
這篇文章主要介紹了python cx_Oracle模塊的安裝和使用詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-02-02
pycharm中加了斷點(diǎn)卻無法調(diào)試,直接執(zhí)行到程序結(jié)束如何解決
這篇文章主要介紹了pycharm中加了斷點(diǎn)卻無法調(diào)試,直接執(zhí)行到程序結(jié)束如何解決問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
python中如何利用matplotlib畫多個并列的柱狀圖
python是一個很有趣的語言,可以在命令行窗口運(yùn)行,下面這篇文章主要給大家介紹了關(guān)于python中如何利用matplotlib畫多個并列的柱狀圖的相關(guān)資料,需要的朋友可以參考下2022-01-01

