2017-12-25 11 views
2

Meine Datenrahmen wie folgt aussehen,Pandas- Umgestalten Datenrahmen und GROUPBY

loc   prod period qty   
0 Customer10 FG1 2483 200.000000  
1 Customer10 FG1 2484 220.000000  
2 Customer10 FG1 2485 240.000000  
3 Customer10 FG1 2486 260.000000  
4 Customer11 FG1 2483 300.000000  
5 Customer11 FG1 2484 320.000000  
6 Customer11 FG1 2485 340.000000  
7 Customer11 FG1 2486 360.000000  
8 Customer12 FG1 2483 400.000000  
9 Customer12 FG1 2484 420.000000  
10 Customer12 FG1 2485 440.000000  
11 Customer12 FG1 2486 460.000000  
12 Customer13 FG1 2483 500.000000  
13 Customer13 FG1 2484 520.000000  
14 Customer13 FG1 2485 540.000000  
15 Customer13 FG1 2486 560.000000  
16 Customer9 FG1 2483 100.000000  
17 Customer9 FG1 2484 120.000000  
18 Customer9 FG1 2485 140.000000  
19 Customer9 FG1 2486 160.000000  

I Datenrahmen (distinct Periode als Spalten und prod als Zeilen) und groupby Periode, loc Erwartete O/P

neu zu gestalten wollen
  2483 2484 2485 2486 
    FG1 1500 1580 1660 1740 

Antwort

2

können Sie pivot_table verwenden:

In [37]: df.pivot_table(index='prod', columns='period', values='qty', aggfunc='sum') 
Out[37]: 
period 2483 2484 2485 2486 
prod 
FG1  1500.0 1600.0 1700.0 1800.0 

oder

In [39]: df.groupby(['prod','period'])['qty'].sum().unstack() 
Out[39]: 
period 2483 2484 2485 2486 
prod 
FG1  1500.0 1600.0 1700.0 1800.0 

UPDATE:

wie Zeitraum von max (Menge) zu bekommen?

In [69]: pvt = df.pivot_table(index='prod', columns='period', values='qty', aggfunc='sum') 

In [70]: pvt 
Out[70]: 
period 2483 2484 2485 2486 
prod 
FG1  1500.0 1600.0 1700.0 1800.0 

In [71]: pvt.idxmax(axis=1) 
Out[71]: 
prod 
FG1 2486 
dtype: int64 
+0

Dank, wie Zeitraum von max (Menge) –

+0

@NikhilPola zu bekommen, meinen Sie aus dem ursprünglichen DF oder aus dem verschwenkten ein? – MaxU

+0

von drehbarem Tisch, thnks –

Verwandte Themen