Pandas转置重置十进制舍入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas转置重置十进制舍入相关的知识,希望对你有一定的参考价值。

我在一个大型结果表中按列仔细定义小数点,但是当我将它转置为适合我的报表中的页面时(使用.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
答案

当转置时,现在转换的行(作为列)可能不是相同类型或相同的舍入。 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列表,因为对象不提供任何性能优势。

以上是关于Pandas转置重置十进制舍入的主要内容,如果未能解决你的问题,请参考以下文章

Python代码阅读(第41篇):矩阵转置

需要转置一个pandas数据帧

转置 Pandas 数据框保留索引

使用 agg 函数在 pandas 中分组时进行舍入

Python Pandas——在多列上融化、旋转、转置

pandas:如何将字典转换为转置数据框? [复制]