Как использовать табулирование для форматирования числа с разделителем тысяч и выравниванием по правому краю
Я использую таблицу ( 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 |
+--------+-----------------+
Спасибо,
3 ответа
Все числа превратились в строки. Добавьте параметр: colalign("вправо", "влево"). Давайте проверим предложение...
print(tabulate(df, headers='keys', tablefmt='psql', showindex=False, colalign=("right", "left")))
+-------------+--------+
| size | path |
|-------------+--------|
| 225,612,466 | /etc |
| 66 | /home |
+-------------+--------+
Бинго, лото. Это есть в их документации.
Я думаю, отсутствующий параметр в 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"))
Использованиеtabulate
tabulate(
tabular_data,
headers, tablefmt,
floatfmt,
numalign, # ---> here
stralign,
missingval,
showindex,
disable_numparse,
colalign,
maxcolwidths
)
Итак, чтобы выровнять число по левому краю, вы можете использоватьnumalign="left"