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

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

но надо пробелами.
Помогите пожалуйста.
xam1816
 x = 1000000
formatted_x = format(x, ",d").replace(",", " ")
print(formatted_x)
gvasily
xam1816
Это не работает, когда я вывожу таблицу стандартными средствами, например
population_df.head()
Т.е. мне бы хотелось определить формат вывода всех чисел, а не заменять запятую на пробел в каждом выводе.
Пробовал добавить к выводу style, но тоже не смог переопределить в нем вывод всех чисел.
xam1816
 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())
gvasily
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())

Видимо поэтому выходит ошибка.
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['Sum'] = df['Sum'].apply(format_number)
print(df.head())
gvasily
xam1816 , огромное спасибо за желание помочь!!
Но у меня количество столбцов может меняться…
Т.е. таблица данных приходит из другого приложения.
Это я упрощенно написал два разных столбца.
Реально их переменное количество.
И заголовков я тоже изначально не знаю.
Т.е. надо в идеале поправить общий формат вывода чисел. Чтобы все числа выводились с нулями.
Либо написать код, который пройдет по столбцам, определит их типы и для всех столбцов, которые содержат числа сделает такую замену…
Может есть иное решение проблемы, я в Питоне только разбираюсь…
Еще раз спасибо!
gvasily
Подсказали на другом форуме - надо воспользоваться стайлером:
 import pandas as pd
data = {'Name': ['Tom', 'Bob', 'Sam'], 'Sum': [2000000, 4000000, 6000000]} 
df = pd.DataFrame(data)
df.style.format(precision=0, thousands=" ", decimal=",")
Еще раз спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB