我想使用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)
无需修改数据本身或创建副本,只需更改其显示方式即可.
我怎样才能做到这一点?
我有一个数据帧,需要根据以下逻辑将其专门转换为两位小数分辨率:
if x (以超过两位小数的值表示) > math.floor(x) + 0.5
if x(以两位以上小数位的值表示)< math.ceil(x) - 0.5
我遇到的主要问题是实际上看到这些新舍入/截断的值替换了数据框中的原始值。
示例数据框:
import math
import pandas as pd
test_df = pd.DataFrame({'weights': ['25.2524%', '25.7578%', '35.5012%', '13.5000%',
"50.8782%", "10.2830%", "5.5050%", "30.5555%", "20.7550%"]})
# .. which creates:
| weights |
|0 | 25.2524%|
|1 | 25.7578%|
|2 | 35.5012%|
|3 | 13.5000%|
|4 | 50.8782%|
|5 | 10.2830%|
|6 | 5.5050%|
|7 | 30.5555%|
|8 | 20.7550%|
Run Code Online (Sandbox Code Playgroud)
定义截断函数,以及配置小数分辨率的函数:
def truncate_decimals(target_allocation, two_decimal_places) -> float:
decimal_exponent = 10.0 …Run Code Online (Sandbox Code Playgroud)