行轉列或者列轉行的資料一般都是groupby後的資料
b = kd.groupby(by=[「當前網點」, 「留倉原因」], as_index=false)[「運單編號」].count()
c = kd.groupby(by=[「當前網點」, 「留倉原因」])[「運單編號」].count()
(as_index=false)同groupby後再 reset_index()。
pandas預設groupby後將聚類的特徵設定為index。
b和c為兩個不同的dateframe,在stack和unstack進行行列轉置時轉換的實際是index和column,而pivot_table、pivot、melt 轉置的是特徵的資料。
groupby後的資料
print(bd.set_index(["當前網點", "留倉原因"]).unstack(level=1))
print(bd.set_index(["當前網點","留倉原因"]).unstack(level=1).stack())
print(bd.set_index(["當前網點","留倉原因"]).unstack(level=1).stack().reset_index())
unstack index最外層轉到columns最外層,level 控制層
stack columns最外層轉到index最外層,level控制層
print(bd.pivot_table("運單編號",index="當前網點",columns="留倉原因",aggfunc="sum",margins=true,margins_name="總和"))
print(pd.pivot_table(bd,"運單編號", index="當前網點", columns="留倉原因", aggfunc="sum", margins=true, margins_name="總和"))
兩種寫法效果一致
gg=bd.pivot("當前網點","留倉原因","運單編號")
melt的作用類似於stack
g = pd.melt(g, id_vars=['當前網點'],
value_vars=['操作原因', '車線銜接原因'],
var_name='留倉原因', value_name='數量')
oracle 行列轉換 總結
oracle行列轉換小結 目錄結構如下 行轉列列轉行 一 行轉列 1.1 初始測試資料 表結構 test tb grade sql create table test tb grade id number 10 not null,user name varchar2 20 char course v...
hive行列轉換總結
具體思路需要根據資料來定,常見的解決方法如下 1 使用case when 查詢出多列即可,即可增加列。或者2.轉成陣列或者集合後 乙個乙個的取值 不就變成一列了 乙個字段 多個取值 變成多列 多列變一列 select concat str1,str2,str3 from 表 concat可以帶多個引...
Pandas行 列選擇
總也記不住的行列選擇 import pandas as pd dataname price time data pd.read csv test.csv 切片 a b 索引 iloc iloc適用於資料進行了篩選後造成索引號與原來不一致的情況 data.iloc 1 data.iloc 1 pric...