我使用下面的python代码在终端上打印报告
print(kf.groupby(level='ErrorCode').apply(lambda x: x/x.sum()))
获取
ErrorCode ResponseType
0 CANCEL_ORDER_CONFIRM 0.7207
TRADE_CONFIRM 0.2792
1 CANCEL_ORDER_CONFIRM 0.7207
TRADE_CONFIRM 0.2792
dtype: float64
但是ErrorCode 0,1必须映射到不同的数字。 该映射可以以任何格式写入文件中。 目前我可以将映射文件写为
0 10.0.0.0
1 10.0.0.1
2 10.2.0.1
可以更改上面的格式。 有没有办法用映射值替换分组值输出。 最终输出就像
ErrorCode ResponseType
0 10.0.0.0 CANCEL_ORDER_CONFIRM 0.7207
TRADE_CONFIRM 0.2792
1 10.0.0.1 CANCEL_ORDER_CONFIRM 0.7207
TRADE_CONFIRM 0.2792
dtype: float64
甚至可以,如果可以在bash中完成,但是对齐应该是可读的。
如果这非常棘手,那么我只是根据映射文件使ErrorCode列值更改(但我认为这也不是一个非常好的方法)
Update1:同样我有data.groupby([data['ErrorCode'], pd.Grouper(freq='1500T')])['latency'].describe().unstack(0)
我的输出是
ErrorCode 0 1
Time_req
2017-03-08 count 111.000000 111.000000
mean 251509.738739 357710.729730
std 250469.755466 795885.356352
min 104877.000000 111343.000000
25% 132616.000000 131953.000000
50% 160899.000000 163100.000000
75% 261440.000000 279448.000000
max 2071299.000000 8039122.000000
但我需要使用名为myd的字典映射ErrorCode
这是myd={0: '0 172.19.13.51', 1: '1 172.19.13.51'}
,输出如下所示
ErrorCode 0 172.19.13.51 1 172.19.13.51
Time_req
2017-03-08 count 111.000000 111.000000
mean 251509.738739 357710.729730
std 250469.755466 795885.356352
min 104877.000000 111343.000000
25% 132616.000000 131953.000000
50% 160899.000000 163100.000000
75% 261440.000000 279448.000000
max 2071299.000000 8039122.000000
答案 0 :(得分:1)
您可以使用rename
将keys
dict
的所有值替换为values
:
d = {0: '10.0.0.0', 1: '10.0.0.1',2: '10.2.0.1'}
df = df.rename(index=d)
print (df)
ErrorCode ResponseType
10.0.0.0 CANCEL_ORDER_CONFIRM 0.7207
TRADE_CONFIRM 0.2792
10.0.0.1 CANCEL_ORDER_CONFIRM 0.7207
TRADE_CONFIRM 0.2792
Name: val, dtype: float64
如果需要键和值:
d = {0: '10.0.0.0', 1: '10.0.0.1',2: '10.2.0.1'}
d = {k:str(k) + ' ' + v for k, v in d.items()}
df = df.rename(index=d)
print (df)
ErrorCode ResponseType
0 10.0.0.0 CANCEL_ORDER_CONFIRM 0.7207
TRADE_CONFIRM 0.2792
1 10.0.0.1 CANCEL_ORDER_CONFIRM 0.7207
TRADE_CONFIRM 0.2792
Name: val, dtype: float64