【发布时间】:2016-03-27 17:32:10
【问题描述】:
使用 Python 制表将 Pandas DataFrame 格式化为 psql 表。这是表格说明:
print tabulate(df,headers=df.columns.values.tolist(), floatfmt=",.2f", tablefmt='psql')
这就是我得到的:
+---------------+---------------+----------------+------------------+
| Total Value | Total P&L | DoD Change | WoW change |
+---------------+---------------+----------------+------------------+
| 6,132,391.61 | 1,132,391.66 | 142,900.00 | 1,341,983.32 |
| 5,123,830.00 | 123,830.00 | -125.00 | 12,375.00 |
| 1,762,700.00 | 62,700.00 | 57,950.00 | 81,700.00 |
| 1,746,970.00 | 46,970.00 | -23,589.30 | nan |
| 5,046,650.00 | 46,650.00 | -7,700.00 | 5,350.00 |
| 4,998,793.08 | -1,206.92 | 0.00 | 0.00 |
| 4,948,365.06 | -51,634.94 | 300.00 | 2,870.00 |
| 4,645,100.00 | -354,900.00 | -106,925.00 | 78,800.00 |
| 4,604,000.00 | -396,000.00 | 0.00 | 0.00 |
| 4,566,477.00 | -433,523.00 | -40,171.50 | -104,325.00 |
| 4,566,477.00 | -433,523.00 | -40,171.50 | -104,325.00 |
+---------------+---------------+----------------+------------------+
由于一些奇怪的原因,数字
【问题讨论】:
-
顺便说一句,即使我通过参数 numalign="decimal",我仍然得到相同的结果。仅当我通过 numalign="right" 时,所有内容都正确对齐,但这只是因为我有两个小数点。这只是一种解决方法,而不是适当的解决方案。
-
看起来这是 Tabulate 库中的一个错误——最近有人filed an issue 提出了这个问题。所以,在它得到修复之前,我认为你的选择是要么使用“对齐”技巧,要么满足于不显示逗号,要么完全使用不同的库。 (当然,第四个选择是贡献一个补丁来解决这个问题)。
-
是的,这个问题似乎正是问题所在。感谢您的链接。现在将解决它并跟踪修复。我认为我不够熟练,无法自己修复它;-)。
标签: python format alignment comma tabular