format - 尝试使用 f-string 格式化和对齐表格中的数字
问题描述
我正在尝试打印一个包含 3 列的简单表格:日期、市场回报和最终价值。我很难获得正确的语法以将列向右或向左对齐并格式化数字 - 作为小数或百分比:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
investment = 10000
expected_returns = 0.06
volatility = 0.14
duration = 20
sip = 10000
print(f'{"Date":<5}{"Return":>10}{"Value":>12}')
for date in range(duration):
market_return = np.random.normal(expected_returns, volatility)
final_value = sip + (1+ market_return)* investment
print(f'{date:<5.0f}{market_return:>10.1f}{final_value:>10.0f}')
investment = final_value
所以第一列是 5 个字符宽(左对齐),第二列和第三列分别是 10 和 12 个字符宽 - 都是右对齐的。
我假设我不需要使用选项卡控件“\t”?所以打印范围的总字符数应该是5+10+12=27。
函数外的打印语句执行良好。
提前谢谢。
解决方案
我想出了其中的 90%,在下面回答(但最后一个问题):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
investment = 10000
expected_returns = 0.06
volatility = 0.14
duration = 20
sip = 10000
print(f"{'Year':<5}{'Return':>10}{'Value':>12}")
for Year in range(duration):
market_return = np.random.normal(expected_returns, volatility)
final_value = sip + (1 + market_return) * investment
print(f"{(Year + 1):>03}{market_return:>12.1%}{final_value:>12,.1f}")
investment = final_value
问:如何使用前导“$”格式化最后一列?(并且通过领先我的意思不是在同一个位置,而是在每个数字的最高位置前面(没有空格)?
谢谢。