2016-09-18 3 views
1

Ich benutze Python Pandas, um eine Pivot-Tabelle von Df zu erstellen. Die df wie folgt aussieht:Pivot-Tabelle mit dem gesamten Index

enter image description here

Die Felder, die fehlenden Werte haben, sind: Herkunft City, Versanddatum, Volumen und Landing Datum. Beachten Sie, dass das Landungsdatum die Summe aus Sendungsdatum und TAT ist.

Was ich will, die Ausgabe erhalten, ist dies:

enter image description here

Ich habe den folgenden Code für die Ausgabe über:

pd.pivot_table(df, values='Volume', index=['DC'], columns=['Landing date'], aggfunc=np.sum, fill_value = 0) 

Der tatsächliche Ausgang ich immer bin, ist

enter image description here

Das Problem hier ist mein Code entfernt die DC = DLT, wie es beim Pivotieren fehlenden Wert hat. Irgendwelche Ideen?

Antwort

0

können Sie verwenden ffill, was gleich ist wie Series.fillna mit method='ffill':

print (df) 
    DC Landing date Volume 
0 MAR  02-09-16 50.0 
1 MAR  03-09-16 98.0 
2 MAR   NaN  NaN 
3 BOY  05-09-16 60.0 
4 BOY  06-09-16 14.0 
5 DLT   NaN  NaN 
6 DLT   NaN  NaN 

df['Landing date'] = df['Landing date'].ffill() 
print (df) 
    DC Landing date Volume 
0 MAR  02-09-16 50.0 
1 MAR  03-09-16 98.0 
2 MAR  03-09-16  NaN 
3 BOY  05-09-16 60.0 
4 BOY  06-09-16 14.0 
5 DLT  06-09-16  NaN 
6 DLT  06-09-16  NaN 

df1 = pd.pivot_table(df, values='Volume', index=['DC'], columns=['Landing date'], aggfunc=np.sum, fill_value = 0)  
df1.index.name = None 
df1.columns.name = None 
print (df1) 
    02-09-16 03-09-16 05-09-16 06-09-16 
BOY   0   0  60  14 
DLT   0   0   0   0 
MAR  50  98   0   0 

Sie können fillna von ersten nicht NaN Wert aus Spalte Landing date:

val = df['Landing date'].dropna().iloc[0] 
print (val) 
02-09-16 

df['Landing date'] = df['Landing date'].fillna(val) 
print (df) 
    DC Landing date Volume 
0 MAR  02-09-16 50.0 
1 MAR  03-09-16 98.0 
2 MAR  02-09-16  NaN 
3 BOY  05-09-16 60.0 
4 BOY  06-09-16 14.0 
5 DLT  02-09-16  NaN 
6 DLT  02-09-16  NaN 
+0

bitte die Bearbeitung sehen. Die tatsächliche gewünschte Ausgabe ist das zweite Bild. Sorry für das Problem – Ajeet

+0

Fügen Sie nur 'df1.columns.name = None' hinzu. – jezrael

+0

jezrael - ich muss die Namen aller DC-Spalten behalten. Wie kann ich das tun – Ajeet

Verwandte Themen