2016-09-18 11 views
1

私はPythonのパンダを使ってdfからピボットテーブルを作成しています。 DFは次のようになります。すべてのインデックス付きピボットテーブル

enter image description here

欠損値を持つフィールドは、次のとおりです。起源市、出荷日、音量やランディング日。着陸日は出荷日とTATの合計です。私は上記の出力のために、次のコードは、

enter image description here

ています:

は、私は出力を取得したいことはこれです

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

私は取得しています実際の出力がある

enter image description here

ここでの問題は、私のコードでは、旋回中に値が欠けているので、DC = DLTが削除されています。何か案は?

答えて

0

あなたが使用することができますffill、何Series.fillnamethod='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 

あなたが列Landing dateから最初の非NaN値によってfillnaことができます。

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

編集を参照してください。実際の所望の出力は第2の画像である。申し訳ありません。 – Ajeet

+0

'df1.columns.name = None'を追加してください。 – jezrael

+0

jezrael - 私はすべてのDC Columnの名前を保持する必要があります。どうすればいいですか? – Ajeet

関連する問題