我有一个pandas数据框'pivoted':
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 :(得分:2)
使用
行warehouse_percentages = pivoted[:] = 100 * pivoted[:].div(pivoted[:].sum(axis=1), axis=0)
您正在重新分配pivoted
的所有值作为操作右侧的结果,这就是为什么您的预期输出与您打印pivoted
的内容不匹配的原因在上面的行之前。
因此,如果您在使用此操作修改pivoted
时打算,请删除pivoted[:]
- 我不确定您是否认为没有副本'' ll修改pivoted
但是没有必要 - Pandas操作几乎总是默认不操作,但返回另一个对象。
warehouse_percentages = 100* pivoted.div(pivoted.sum(axis=1), axis=0)