Форум сайта python.su
Добрый день!
Пытаюсь в jupyter lab сделать так, чтобы числа в таблицах были разделены пробелами между триадами.
Т.е. нужно: 1 000 000
Никак не получается.
Разделил запятыми:
import pandas as pd
pd.options.display.float_format = ‘{:,.0f}’.format
но надо пробелами.
Помогите пожалуйста.
Офлайн
x = 1000000 formatted_x = format(x, ",d").replace(",", " ") print(formatted_x)
Офлайн
xam1816
Это не работает, когда я вывожу таблицу стандартными средствами, например
population_df.head()
Т.е. мне бы хотелось определить формат вывода всех чисел, а не заменять запятую на пробел в каждом выводе.
Пробовал добавить к выводу style, но тоже не смог переопределить в нем вывод всех чисел.
Офлайн
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())
Офлайн
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())
Офлайн
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())
Офлайн
xam1816 , огромное спасибо за желание помочь!!
Но у меня количество столбцов может меняться…
Т.е. таблица данных приходит из другого приложения.
Это я упрощенно написал два разных столбца.
Реально их переменное количество.
И заголовков я тоже изначально не знаю.
Т.е. надо в идеале поправить общий формат вывода чисел. Чтобы все числа выводились с нулями.
Либо написать код, который пройдет по столбцам, определит их типы и для всех столбцов, которые содержат числа сделает такую замену…
Может есть иное решение проблемы, я в Питоне только разбираюсь…
Еще раз спасибо!
Офлайн
Подсказали на другом форуме - надо воспользоваться стайлером:
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)
Офлайн