我想使用print()和IPython 显示具有给定格式的pandas数据帧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
Run Code Online (Sandbox Code Playgroud)
我想以某种方式强迫这种印刷
cost
foo $123.46
bar $234.57
baz $345.68
quux $456.79
Run Code Online (Sandbox Code Playgroud)
无需修改数据本身或创建副本,只需更改其显示方式即可.
我怎样才能做到这一点?
作为Python新手我最近发现使用Py 2.7我可以做类似的事情:
print '{:20,.2f}'.format(123456789)
Run Code Online (Sandbox Code Playgroud)
这将产生最终的输出:
123,456,789.00
Run Code Online (Sandbox Code Playgroud)
我现在想要为pandas df获得类似的结果,所以我的代码就像:
import pandas as pd
import random
data = [[random.random()*10000 for i in range(1,4)] for j in range (1,8)]
df = pd.DataFrame (data)
print '{:20,.2f}'.format(df)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我有错误:
Unknown format code 'f' for object of type 'str'
Run Code Online (Sandbox Code Playgroud)
有什么建议'{:20,.2f}'.format(df)吗?
现在我的想法是索引数据框(它是一个小的),然后格式化其中的每个浮动,可能分配astype(str),并重建DF ......但看起来很丑陋:-(和我'我甚至不确定它会起作用..
你怎么看 ?我被卡住了...并希望在将这些数据帧转换为reportlabs网格时为我的数据帧提供更好的格式.
我已经找了4个小时以上问题的答案.大多数页面都表示字符串格式化 这不是我想要的.
我想在IPython中为整数和浮点数的千位分隔符设置一个参数.该选项应仅影响数字在交互式会话中的显示方式.我想设置一次参数.我需要为每个新输出做一些格式化的所有解决方案根本不能满足我的需要.我做了一些探索性数据分析,并且不想为每行代码打扰数字格式.
该格式应与所有整数和浮点数一起使用,包括存储在numpy数组或pandas数据帧中的那些.
对于那些熟悉Mathematica的人,我指出了如何在Mathematica中做到这一点:转到preferences => appearance => numbers => format.在那里,您可以"启用自动数字格式化"并选择"数字块分隔符".
示例:如果我在我的ipython会话中输入"600 + 600",我想要以下输出:1'200(其中'将是我的千位分隔符).
我在Spyder和IPython笔记本中使用IPython控制台.谢谢.