Python 数据透视表还是分组数据帧?
我有个问题。我这样做:Python 数据透视表还是分组数据帧?,python,sorting,pandas,pivot,Python,Sorting,Pandas,Pivot,我有个问题。我这样做: In [405]: pippo=ass_t1.pivot_table(['Rotazioni a volume','Distribuzione Ponderata'],rows=['SEGM1','DESC']).sort() In [406]: pippo Out[406]: Distribuzione Ponderata Rotazioni a volume SEGM1 DESC
In [405]: pippo=ass_t1.pivot_table(['Rotazioni a volume','Distribuzione Ponderata'],rows=['SEGM1','DESC']).sort()
In [406]: pippo
Out[406]:
Distribuzione Ponderata Rotazioni a volume
SEGM1 DESC
AD ACCADINAROLO 74.040 140249.693409
ZYMIL AMALAT Z 90.085 321529.053570
FUN SPECIALMALAT S 88.650 120711.182177
NORM STD INNAROLO 49.790 162259.216710
STD P.NAROLO 52.125 1252174.695695
STD PLNAROLO 54.230 213257.829615
BONTA' MALAT B 79.280 520454.366419
DA STD RILGARD 35.290 554927.497875
OVANE VT.MANTO 15.040 466232.639628
WEIGHT MALAT W 79.170 118628.572692
我的目标是让每个“SEGM1”按“Distributizione Pounderata”排序。例如,在“标准”子集中,第一行应为“BONTA”MALAT B,“Distributizione Pounderata”级别较高。
我能够使用groupby方法实现部分结果,但无法设置多个列。
有人能帮我吗
import io
import pandas as pd
import numpy as np
text = '''\
SEGM1\tDESC\tDistribuzione Ponderata\tRotazioni a volume
AD\tACCADINAROLO\t74.040\t140249.693409
AD\tZYMIL AMALAT Z\t90.085\t321529.053570
FUN\tSPECIALMALAT S\t88.650\t120711.182177
NORM\tSTD INNAROLO\t49.790\t162259.216710
NORM\tSTD P.NAROLO\t52.125\t1252174.695695
NORM\tSTD PLNAROLO\t54.230\t213257.829615
NORM\tBONTA' MALAT B\t79.280\t520454.366419
NORM\tDA STD RILGARD\t35.290\t554927.497875
NORM\tOVANE VT.MANTO\t15.040\t466232.639628
NORM\tWEIGHT MALAT W\t79.170\t118628.572692
'''
df = pd.read_csv(io.BytesIO(text), delimiter = '\t',
index_col = (0,1),)
key1 = df.index.labels[0]
key2 = df['Distribuzione Ponderata'].rank(ascending=False)
sorter = np.lexsort((key2, key1))
sorted_df = df.take(sorter)
print(sorted_df)
屈服
Distribuzione Ponderata Rotazioni a volume
SEGM1 DESC
AD ZYMIL AMALAT Z 90.085 321529.053570
ACCADINAROLO 74.040 140249.693409
FUN SPECIALMALAT S 88.650 120711.182177
NORM BONTA' MALAT B 79.280 520454.366419
WEIGHT MALAT W 79.170 118628.572692
STD PLNAROLO 54.230 213257.829615
STD P.NAROLO 52.125 1252174.695695
STD INNAROLO 49.790 162259.216710
DA STD RILGARD 35.290 554927.497875
OVANE VT.MANTO 15.040 466232.639628
我学会了这个把戏。关键在于使用。非常感谢!真的很有用。M