Pandas DataFrame Float格式

时间:2015-03-17 19:47:06

标签: python python-2.7 numpy pandas formatting

我有一个Pandas DataFrame调查回复,我将其汇总到平均分数并输出到HTML。我目前的代码如下:

import pandas as pd
import numpy as np

df = pd.read_csv('survey_scores.csv', header=0)
np.round(pd.DataFrame(df.groupby('question_number').aggregate('mean').score).transpose(), 2).to_html()

在csv ...中需要一个看起来像这样的DataFrame。

response_number, question_number, score
1, 1, 3.0
1, 2, 4.0
1, 3, 4.0
2, 1, 4.0
2, 2, 4.0
2, 3, 1.0

它将平均分数输出到HTML表格,格式化得分值如下:

3.5, 4, 2.5

但是,我试图让输出强制每个数字在小数点后显示两位数。我把它舍入到两个小数点,但我很难得到输出格式化这样的值:

3.50, 4.00, 2.50

如何将这些值格式化为两位小数?

3 个答案:

答案 0 :(得分:3)

我已经解决了这个问题。 pandas.DataFrame.to_html()可以格式化浮点数。

import pandas as pd
import numpy as np

df = pd.read_csv('survey_scores.csv', header=0)
np.round(pd.DataFrame(df.groupby('question_number').aggregate('mean').score).transpose(), 2).to_html(float_format=lambda x: '%.2f' % x)

答案 1 :(得分:1)

df.groupby('question_number').aggregate('mean').score.transpose()\
.apply(lambda x: '{0:.2f}'.format(x))

Out[422]: 
question_number
1                  3.50
2                  4.00
3                  2.50
Name: score, dtype: object

答案 2 :(得分:0)

假设您有float个值,请将它们格式化为2位数。

>>> print("%.2f" % 2.5)
2.50