Как использовать табулирование для форматирования числа с разделителем тысяч и выравниванием по правому краю - PullRequest
0 голосов
/ 15 ноября 2018

Я использую табуляцию (https://pypi.org/project/tabulate/)) и хочу отформатировать числовой столбец с разделителем тысяч и выровнять его по правому краю. Это то, что я сделал, и он не выровняет по праву мой столбец.

import pandas as pd
rom tabulate import tabulate

df = pd.DataFrame([{'size':225612466, 'path': '/etc'}, {'size':66, 'path': '/home'}])
df['size'] = df['size'].apply(lambda x: "{:,}".format(x).rjust(15))
print(tabulate(df, headers='keys', tablefmt='psql', showindex=False))

+--------+-------------+
| path   | size        |
|--------+-------------|
| /etc   | 225,612,466 |
| /home  | 66          |
+--------+-------------+

Мне бы хотелось, чтобы это было так:

+--------+-----------------+
| path   | size            |
|--------+-----------------|
| /etc   |     225,612,466 |
| /home  |              66 |
+--------+-----------------+

Спасибо,

1 Ответ

0 голосов
/ 15 ноября 2018

Я предполагаю, что отсутствующий параметр в tabulate равен numalign="right", но вам нужно избавиться от ручного rjust, который изменяет значения на str:

import pandas as pd
rom tabulate import tabulate

df = pd.DataFrame([{'size':225612466, 'path': '/etc'}, {'size':66, 'path': '/home'}])
print(tabulate(df, headers='keys', tablefmt='psql', showindex=False, numalign="right"))

Дает вывод:

+--------+-----------+
| path   |      size |
|--------+-----------|
| /etc   | 225612466 |
| /home  |        66 |
+--------+-----------+

Если вы хотите сохранить разделители тысяч, вам нужно сохранить форматирование и выровнять строки по ширине, используя stralign:

print(tabulate(df, headers='keys', tablefmt='psql', showindex=False, stralign="right"))
...