Pandas转置重置十进制舍入

问题描述 投票:2回答:1

我在一个大型结果表中按列仔细定义小数点,但是当我将它转置为适合我的报表中的页面时(使用.to_latex),pandas将小数设置为最大数字。

在转置期间是否可以保持我的小数精度?我宁愿在转置后不必定义小数。

(注意:我注意到在转置之前数据帧中有一行字符串时它不会这样做,所以我认为这是某种数据类型定义,我不理解?)

示例代码:

df = pd.DataFrame(np.random.random([3, 3]),
     columns=['A', 'B', 'C'], index=['first', 'second', 'third'])

df = df.round({'A': 1, 'C': 2})
print(df)
print(df.transpose())

输出:

         A         B     C
first   0.3  0.557432  0.78
second  0.8  0.568175  0.28
third   0.4  0.745703  0.62
      first    second     third
A  0.300000  0.800000  0.400000
B  0.557432  0.568175  0.745703
C  0.780000  0.280000  0.620000

我想要:

      first    second     third
A  0.3       0.8       0.4
B  0.557432  0.568175  0.745703
C  0.78      0.28      0.62
python pandas latex transpose decimal-precision
1个回答
4
投票

当转置时,现在转换的行(作为列)可能不是相同类型或相同的舍入。 Pandas试图解决这个问题(如果可能的话,从性能的角度来看),因此重置舍入。如果要保留舍入,请将数据帧转换为object类型,然后转置 -

df.astype(object).T

     first    second     third
A      0.8       0.7       0.7
B  0.22444  0.475358  0.498084
C     0.17      0.87      0.71 

现在,pandas不会对对象列做任何假设,并且它们按原样进行转置,而不会尝试转换数据。请记住,作为对象的数据在性能方面是自杀的,此时您也可以使用python列表,因为对象不提供任何性能优势。

© www.soinside.com 2019 - 2024. All rights reserved.