Pandas DataFrame 浮点格式
Pandas DataFrame Float 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 table 格式的分数值,如下所示:
3.5, 4, 2.5
但是,我试图让输出强制每个数字显示小数点后两位数。我把它四舍五入到小数点后两位,但我很难让我的输出格式化这样的值:
3.50, 4.00, 2.50
如何将这些值格式化为两位小数?
假设您有 float
个值,将它们格式化为 2 位数字。
>>> print("%.2f" % 2.5)
2.50
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
我已经解决了这个问题。 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)
我有一个 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 table 格式的分数值,如下所示:
3.5, 4, 2.5
但是,我试图让输出强制每个数字显示小数点后两位数。我把它四舍五入到小数点后两位,但我很难让我的输出格式化这样的值:
3.50, 4.00, 2.50
如何将这些值格式化为两位小数?
假设您有 float
个值,将它们格式化为 2 位数字。
>>> print("%.2f" % 2.5)
2.50
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
我已经解决了这个问题。 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)