避免四舍五入为特定的大熊猫熊猫

时间:2018-12-20 13:32:34

标签: python pandas dataframe

我有一个执行以下操作的数据框:

df: 
      ColA      ColB       ColC 
      2.7E-16   7.9E-08    1.3E-16
      5.4E-19   2.2E-02    4.5E-18

我没有“置信度”列需要四舍五入。

输出如下:

  ColA      ColB       ColC     Confidence %
  2.7E-16   7.9E-08    1.3E-16   1.0
  5.4E-19   2.2E-02    4.5E-18   1.0

我希望输入输出看起来像这样:

  ColA      ColB       ColC     Confidence %
  2.7E-16   7.9E-08    1.3E-16   99.999990
  5.4E-19   2.2E-02    4.5E-18   99.9999000

代码:

pd.set_option("display.precision", 15)


pval_dataframe['Confidence %'] = pval_dataframe.min(axis=1).apply(lambda x: 1- x )

2 个答案:

答案 0 :(得分:0)

我希望这会对您有所帮助。

a = ["2.7E-16","5.4E-19"]
b = ["7.9E-08","2.2E-02"]
c = ["1.3E-16","4.5E-18"]    
pval_dataframe = pd.DataFrame(data={"ColA":a,"ColB":b,"ColC":c})

pval_dataframe = pval_dataframe.astype(float)

pd.set_option("display.precision", 15)

我尝试过的是:

pval_dataframe['Confidence %'] = pval_dataframe.min(axis=1).apply(lambda x : format(float(1-x),'.30g'))

阅读format函数的文档

答案 1 :(得分:0)

我似乎可以使用Decimal

from decimal import Decimal

df['Confidence %'] = df.min(1).apply(lambda x: 1 - Decimal(x))


        ColA            ColB            ColC             Confidence %
0   2.700000e-16    7.900000e-08    1.300000e-16    0.9999999999999998700000000000
1   5.400000e-19    2.200000e-02    4.500000e-18    0.9999999999999999994600000000