2017-03-09 50 views
0

我有一個數據幀熊貓「擺動」:大熊貓分不給正確的結果

Reason    CE CS DG DR IC IO  
Warehouse Month                 
01  01   9 4 4 0 1 8 

我也有一個累積的總的問題的變量。這是一個「int」型變量。在這種情況下,它是626

當我運行下面一行:total_percentages = pivoted/total_issues

我沒有得到正確的(或預期)結果:

01  01  0.021143 0.009397 0.009397 0.000000 0.002349 0.018793 

我希望這樣的:

01  01  0.014376 0.006389 0.006389 0.00000 0.001597 0.012780 

我全碼:

issue_df = pd.read_sql(issue_query, cnxn) 
issue_df.rename(columns={'00001' : 'Invoices', 'OBWHID' : 'Warehouse', 'OBRTRC':'Reason', 'INV_MONTH':'Month', '00005':'Date'}, inplace=True) 


pivoted = pd.pivot_table(issue_df, index=["Warehouse", "Month"], values=["Invoices"], columns=['Reason'], aggfunc='count', fill_value=0) 

pivoted.loc['Column Total'] = pivoted.sum() 
print(pivoted.dtypes) 

#Percentages of Warehouse Returns by Month 
warehouse_percentages = pivoted[:] = 100 * pivoted[:].div(pivoted[:].sum(axis=1), axis=0) 
print(warehouse_percentages) 
print(total_issues) 
total_percentages = pivoted.div(total_issues)` 
+0

什麼是'pivoted.dtypes'給你? –

+0

你嘗試過pivoted.div(total_issues)嗎? – Vaishali

+0

@ juanpa.arrivillaga int64看起來是數據類型。 – AlliDeacon

回答

2

隨着線

warehouse_percentages = pivoted[:] = 100 * pivoted[:].div(pivoted[:].sum(axis=1), axis=0)

您重新分配所有的pivoted值的是操作的右手邊的結果,這就是爲什麼你的預期輸出不匹配你打印pivoted如同前面的行一樣。

因此,如果你不與此操作修改pivoted打算,刪除pivoted[:] - 我不知道,如果你認爲沒有副本,你將修改pivoted但它是沒有必要的 - 熊貓操作幾乎總是默認不運行,但返回另一個對象。

warehouse_percentages = 100* pivoted.div(pivoted.sum(axis=1), axis=0) 
+0

非常感謝你!作爲一個大熊貓的初學者和Python,「坐在我的褲子旁邊 - 呃」我感謝你的投入,現在發現它顯而易見。你是我今天的英雄! – AlliDeacon

+0

@AlliDeacon你很受歡迎,很高興我能幫忙:) – miradulo