Python Pandas将舍入的数据帧输出到字典

2024-04-26 13:09:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个电子表格,其中包括一行一行的人和他们的教育程度,我把它读入了一个数据框。在

我试图返回一个字典,其中包含已四舍五入到小数点后3位的相对频率。在

return self.data['education'].value_counts(normalize=True).round(3)

退货

^{pr2}$

但是

return self.data['education'].value_counts(normalize=True).round(3).to_dict()

退货

{u'High Sch': 0.125, u'BA/BS': 0.45800000000000002, u'PostGrad': 0.16700000000000001, u'Some Col': 0.25}

我只是有点困惑。有人能解释一下发生了什么事吗?在


Tags: 数据selftruedatareturn字典value频率
3条回答

MaxU的响应可用于打印,但在使用to_dict时不会更改任何内容。在

这就是我用来解决这个问题的方法:

my_s = pd.Series([0.12345,0.45678], index=['a','b'])
my_s = my_s.apply(lambda x: '{:,.3%}'.format(x))

这样可以得到:

^{pr2}$

在np.圆形不会像你想的那样做。在

例如,运行以下命令:

np.round(3.1231,3)

它回来了

^{pr2}$

在np.圆形正在转换为四舍五入数(3.123)的最接近的可能表示形式,并且它所能达到的精度是上面看到的数字(3.1230000000000002)

您在示例中还看到,当您调用对象时

return self.data['education'].value_counts(normalize=True).round(3)

在pd系列正在对输出执行一些修剪。在

my_s = pd.Series([3.123,2], index=['a','b'])
my_s 

印刷品

a    3.123
b    2.000
dtype: float64

但我的指纹

 3.1230000000000002

你要做的是按照另一个答案建议的方式格式化数字的表示形式。在

试试这个:

pd.options.display.float_format = '{:,.3f}'.format

相关问题 更多 >