2016-09-18 2 views
1

저는 python pandas를 사용하여 df에서 피벗 테이블을 만듭니다. 누락 된 값은이모든 색인이있는 피벗 테이블

enter image description here

필드 : 원산지시, 출하 날짜, 볼륨 및 랜딩 날짜 DF 같은 보인다. 방문 날짜는 배송 날짜와 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

편집을 참조하십시오. 실제 원하는 출력은 두 번째 이미지입니다. 죄송합니다. – Ajeet

+0

'df1.columns.name = None' 만 추가하십시오. – jezrael

+0

jezrael - 모든 DC 컬럼의 이름을 유지해야합니다. 어떻게해야합니까? – Ajeet