отображать pandas dataframe с европейским форматированием - PullRequest
0 голосов
/ 21 декабря 2018

Я нашел ответы на вопрос о том, как загрузить CSV-файлы с европейским форматированием в кадры данных Pandas и отобразить их в формате США (2 345,21).Тем не менее, как я могу отображать плава, сохраненные в американском формате в европейском формате (2.345,21) в пандах.

Я попытался просто изменить точку и запятую здесь:

из

pd.options.display.float_format = '{:,.2f}'.format

до

pd.options.display.float_format = '{:.,2f}'.format

, но это не работает.Другая возможность может состоять в том, чтобы изменить тип на строку, а затем заменить точки запятыми, но разве нет более элегантного способа?


Кажется, он работает с разделителями, поддерживающими локали.Если ваша операционная система имеет языковой стандарт Германия, это довольно просто:

import pandas as pd
import locale
locale.setlocale(locale.LC_ALL, '')
pd.options.display.float_format = '{:n}'.format
df = pd.DataFrame([2123.4567, 234.5678, 345.6789, 456.7890],
                  index=['foo','bar','baz','quux'],
                  columns=['cost'])
print(df)

приводит к:

         cost
foo  2.123,46
bar   234,568
baz   345,679
quux  456,789

Однако сейчас я имею дело с проблемой форматирования точности и формата длявысокие цифры.В результате форматирования следующая команда несколько удивляет.

#precision
pd.options.display.float_format = '{:.2n}'.format
print(df)

        cost
foo  2,1e+03
bar  2,3e+02
baz  3,5e+02
quux 4,6e+02

#high numbers
pd.options.display.float_format = '{:n}'.format
df = pd.DataFrame([1222333, 234.5678, 345.6789, 456.7890],
                  index=['foo','bar','baz','quux'],
                  columns=['cost'])
print(df)

            cost
foo  1,22233e+06
bar      234,568
baz      345,679
quux     456,789

1 Ответ

0 голосов
/ 21 декабря 2018

Прежде чем начать:

conda install babel

Затем попробуйте это:

from babel.numbers import decimal, format_decimal
format_decimal(22222345.22, format='#,##0.##;-#', locale='de')
...