猿问

如何使用列的格式字符串显示浮点数的pandas DataFrame?

我想使用print()和IPython 显示给定格式的熊猫数据框display()。例如:


df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],

                  index=['foo','bar','baz','quux'],

                  columns=['cost'])

print df


         cost

foo   123.4567

bar   234.5678

baz   345.6789

quux  456.7890

我想以某种方式强迫这样做


         cost

foo   $123.46

bar   $234.57

baz   $345.68

quux  $456.79

无需修改数据本身或创建副本,只需更改其显示方式即可。


我怎样才能做到这一点?


忽然笑
浏览 1379回答 3
3回答

沧海一幻觉

import pandas as pdpd.options.display.float_format = '${:,.2f}'.formatdf = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],                  index=['foo','bar','baz','quux'],                  columns=['cost'])print(df)产量        costfoo  $123.46bar  $234.57baz  $345.68quux $456.79但这仅在您希望每个浮点数都用美元符号格式化时才有效。否则,如果您只想为某些浮点数设置美元格式,那么我认为您必须预先修改数据框(将这些浮点数转换为字符串):import pandas as pddf = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],                  index=['foo','bar','baz','quux'],                  columns=['cost'])df['foo'] = df['cost']df['cost'] = df['cost'].map('${:,.2f}'.format)print(df)产量         cost       foofoo   $123.46  123.4567bar   $234.57  234.5678baz   $345.68  345.6789quux  $456.79  456.7890

慕运维8079593

我喜欢将pandas.apply()与python format()结合使用。import pandas as pds = pd.Series([1.357, 1.489, 2.333333])make_float = lambda x: "${:,.2f}".format(x)s.apply(make_float)而且,它可以轻松地用于多列...df = pd.concat([s, s * 2], axis=1)make_floats = lambda row: "${:,.2f}, ${:,.3f}".format(row[0], row[1])df.apply(make_floats, axis=1)
随时随地看视频慕课网APP

相关分类

Python
我要回答