重命名组名标题熊猫



我使用以下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

但是错误代码 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 列值(但我认为这也不是一个很好的方法(

更新1:同样,我也有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的字典映射错误代码这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

您可以使用rename替换从dict keysvalues的所有值:

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

最新更新