Pandas 转置重置小数舍入

Pandas transpose resets decimal rounding

我在大型结果 table 中按列仔细定义小数点,但是当我转置它以便它适合我的报告中的页面时(使用 .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 试图解决这个问题(如果可能的话,从性能的角度来看),因此舍入被重置。如果要保留舍入,将dataframe转为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 列表,因为对象不提供任何性能优势。