Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2023 07:33:08

gvasily
Зарегистрирован: 2023-02-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как отформатировать число в pandas - разделить триады пробелами?

Добрый день!
Пытаюсь в jupyter lab сделать так, чтобы числа в таблицах были разделены пробелами между триадами.
Т.е. нужно: 1 000 000
Никак не получается.
Разделил запятыми:

import pandas as pd
pd.options.display.float_format = ‘{:,.0f}’.format

но надо пробелами.
Помогите пожалуйста.

Офлайн

#2 Фев. 27, 2023 10:37:20

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  122  -
Профиль   Отправить e-mail  

Как отформатировать число в pandas - разделить триады пробелами?

 x = 1000000
formatted_x = format(x, ",d").replace(",", " ")
print(formatted_x)

Офлайн

#3 Фев. 27, 2023 10:45:16

gvasily
Зарегистрирован: 2023-02-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как отформатировать число в pandas - разделить триады пробелами?

xam1816
Это не работает, когда я вывожу таблицу стандартными средствами, например
population_df.head()
Т.е. мне бы хотелось определить формат вывода всех чисел, а не заменять запятую на пробел в каждом выводе.
Пробовал добавить к выводу style, но тоже не смог переопределить в нем вывод всех чисел.

Офлайн

#4 Фев. 27, 2023 11:25:45

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  122  -
Профиль   Отправить e-mail  

Как отформатировать число в pandas - разделить триады пробелами?

 import pandas as pd
data = {'number': [1000000]}
df = pd.DataFrame(data)
def format_number(x):
    return '{:,}'.format(x).replace(',', ' ')
df = df.applymap(format_number)
print(df.head())

Офлайн

#5 Фев. 27, 2023 22:52:59

gvasily
Зарегистрирован: 2023-02-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как отформатировать число в pandas - разделить триады пробелами?

xam1816
У меня в датафрейме не только числа, но еще и другие типы.
Причем количество столбцов может меняться.
Условно:

 import pandas as pd
data = {'Name': ['Tom', 'Bob', 'Sam'], 'Sum': [2000000, 4000000, 6000000]} 
df = pd.DataFrame(data) 
def format_number(x):
    return '{:,}'.format(x).replace(',', ' ')
df = df.applymap(format_number)
print(df.head())

Видимо поэтому выходит ошибка.

Офлайн

#6 Фев. 27, 2023 23:30:33

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  122  -
Профиль   Отправить e-mail  

Как отформатировать число в pandas - разделить триады пробелами?

  
import pandas as pd
data = {'Name': ['Tom', 'Bob', 'Sam'], 'Sum': [2000000, 4000000, 6000000]}
df = pd.DataFrame(data)
def format_number(x):
    return '{:,}'.format(x).replace(',', ' ')
df['Sum'] = df['Sum'].apply(format_number)
print(df.head())

Офлайн

#7 Фев. 28, 2023 12:04:16

gvasily
Зарегистрирован: 2023-02-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как отформатировать число в pandas - разделить триады пробелами?

xam1816 , огромное спасибо за желание помочь!!
Но у меня количество столбцов может меняться…
Т.е. таблица данных приходит из другого приложения.
Это я упрощенно написал два разных столбца.
Реально их переменное количество.
И заголовков я тоже изначально не знаю.
Т.е. надо в идеале поправить общий формат вывода чисел. Чтобы все числа выводились с нулями.
Либо написать код, который пройдет по столбцам, определит их типы и для всех столбцов, которые содержат числа сделает такую замену…
Может есть иное решение проблемы, я в Питоне только разбираюсь…
Еще раз спасибо!

Офлайн

#8 Фев. 28, 2023 12:43:12

gvasily
Зарегистрирован: 2023-02-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как отформатировать число в pandas - разделить триады пробелами?

Подсказали на другом форуме - надо воспользоваться стайлером:

 import pandas as pd
data = {'Name': ['Tom', 'Bob', 'Sam'], 'Sum': [2000000, 4000000, 6000000]} 
df = pd.DataFrame(data)
df.style.format(precision=0, thousands=" ", decimal=",")
Еще раз спасибо!

Отредактировано gvasily (Фев. 28, 2023 13:00:04)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version