在多索引数据框架pandas中的负值上加括号



我有一个多索引数据框架的形式如下():

key  nm    c0    c1   c2   c3  
bar one -0.42  0.56  0.27  1.08
two -0.67  0.11  1.47  0.52
baz one  0.40  0.57  1.71  1.03
two -0.37 -1.15 -1.34  0.84

我试图在负数上设置括号,这样它看起来像下面:

key  nm    c0    c1   c2     c3  
bar one (0.42)  0.56  0.27   1.08
two (0.67)  0.11  1.47   0.52
baz one  0.40  0.57   1.71   1.03
two (0.37) (1.15) (1.34)  0.84

我试过用

屏蔽它
idx = pd.IndexSlice
mask = df.loc[idx[:, :], :] < 0

请帮助我如何在这个掩码上设置括号;或者是否有更好的方法?

尝试用applymapformat,注意这里的数字变成了str

df.applymap(lambda x : str(x) if x >= 0 else f'({abs(x)})')
Out[497]: 
c0      c1      c2    c3
nm                               
one  (0.42)    0.56    0.27  1.08
two  (0.67)    0.11    1.47  0.52
one     0.4    0.57    1.71  1.03
two  (0.37)  (1.15)  (1.34)  0.84

您可以尝试使用where:

df.where(df.ge(0), '('+df.abs().astype(str)+')')

最新更新