我看到this和this格式化浮点数以便在pandas中显示,但我对整数做同样的事情感兴趣。
现在,我有
pd.options.display.float_format = '{:,.2f}'.format
这与我的数据中的浮点数有关,但是会在强制转换为浮点数的整数上留下恼人的尾随零,或者我将使用不用逗号格式化的纯整数。
pandas docs提到SeriesFormatter
课程,但我无法找到任何信息。
或者,如果有一种方法可以编写单个字符串格式化程序,将浮动格式设置为'{:,.2f}'
并浮点数为尾随小数为'{:,d}'
,那也可以。
答案 0 :(得分:10)
你可以修补pandas.io.formats.format.IntArrayFormatter
:
import contextlib
import numpy as np
import pandas as pd
import pandas.io.formats.format as pf
np.random.seed(2015)
@contextlib.contextmanager
def custom_formatting():
orig_float_format = pd.options.display.float_format
orig_int_format = pf.IntArrayFormatter
pd.options.display.float_format = '{:0,.2f}'.format
class IntArrayFormatter(pf.GenericArrayFormatter):
def _format_strings(self):
formatter = self.formatter or '{:,d}'.format
fmt_values = [formatter(x) for x in self.values]
return fmt_values
pf.IntArrayFormatter = IntArrayFormatter
yield
pd.options.display.float_format = orig_float_format
pf.IntArrayFormatter = orig_int_format
df = pd.DataFrame(np.random.randint(10000, size=(5,3)), columns=list('ABC'))
df['D'] = np.random.random(df.shape[0])*10000
with custom_formatting():
print(df)
产量
A B C D
0 2,658 2,828 4,540 8,961.77
1 9,506 2,734 9,805 2,221.86
2 3,765 4,152 4,583 2,011.82
3 5,244 5,395 7,485 8,656.08
4 9,107 6,033 5,998 2,942.53
在with-statement
之外:
print(df)
产量
A B C D
0 2658 2828 4540 8961.765260
1 9506 2734 9805 2221.864779
2 3765 4152 4583 2011.823701
3 5244 5395 7485 8656.075610
4 9107 6033 5998 2942.530551
答案 1 :(得分:4)
Jupyter笔记本电脑的另一种选择是使用table.style.format('{:,}')
col1 col2
0s 9,246,452 6,669,310
>0 2,513,002 5,090,144
table
col1 col2
0s 9246452 6669310
>0 2513002 5090144
,但据我所知它仅适用于单个数据帧,因此您每次都必须调用它:
locals {
vars = {
some_address = aws_instance.some.private_ip
}
}
user-data = templatefile("router-init.sh", vars)