要聚合并每秒查找值,我正在Python中使用pandas进行以下操作,但是,记录到文件中的输出未按它们在此处显示的方式显示列。以某种方式对这些列名称进行排序,因此在UpdateTotal和UpdatesSec之前显示TotalDMLsSec。
'DeletesTotal': x['Delete'].sum(),
'DeletesSec': x['Delete'].sum()/VSeconds,
'SelectsTotal': x['Select'].sum(),
'SelectsSec': x['Select'].sum()/VSeconds,
'UpdateTotal': x['Update'].sum(),
'UpdatesSec': x['Update'].sum()/VSeconds,
'InsertsTotal': x['Insert'].sum(),
'InsertsSec': x['Insert'].sum()/VSeconds,
'TotalDMLsSec':(x['Delete'].sum()+x['Update'].sum()+x['Insert'].sum())/VSeconds
})
)
df.to_csv(/home/summary.log,sep='\t', encoding='utf-8-sig')
除上述问题外,还有其他几个问题-
这里的任何帮助将不胜感激。
答案 0 :(得分:0)
假设您的DataFrame是这样的:
Deletes Selects Updates Inserts
Name
Xxx 20 10 40 50
Yyy 12 32 24 11
Zzz 70 20 30 20
然后总计和每秒总计都可以计算为:
total = df.sum().rename('Total')
VSeconds = 5 # I assumed some value
tps = (total / VSeconds).rename('Total per sec')
然后,您可以将以上两行添加到DataFrame中:
df = df.append(totals).append(tps)
缺点是所有数字都转换为 float 。 但是在 Pandat 中没有其他方法,因为每一列都必须有 值一个类型。
然后您可以例如将其写入CSV文件(包括总数)。
答案 1 :(得分:0)
这就是我的努力
df.to_excel(vExcelFile,'All')
vSortedDF=df.sort_values(['Deletes%'],ascending=False)
vSortedDF.loc[vSortedDF['Deletes%']> 5, ['DeletesTotal','DeletesSec','Deletes%']].to_excel(vExcelFile,'Top Delete objects')
vExcelFile.save()
对于CSV,使用,
而不是使用单独的\ t,效果很好。
df.to_csv(/home/summary.log,sep='\t', encoding='utf-8-sig')