2017-03-09 45 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