假设我有一个pandas数据框,想要给所有数字(包括整数和浮点数)添加千位分隔符,有什么简单快捷的方法可以做到吗?
在使用,
格式化数字时,你可以直接使用'{:,}'.format
:
n = 10000
print '{:,}'.format(n)
n = 1000.1
print '{:,}'.format(n)
formatters
参数来格式化to_html
,如此处所讨论的那样。num_format = lambda x: '{:,}'.format(x)
def build_formatters(df, format):
return {
column:format
for column, dtype in df.dtypes.items()
if dtype in [ np.dtype('int64'), np.dtype('float64') ]
}
formatters = build_formatters(data_frame, num_format)
data_frame.to_html(formatters=formatters)
使用Series.map
或Series.apply
方法,参考这个解决方案:
df['col'] = df['col'].map('{:,}'.format)
df['col'] = df['col'].map(lambda x: f'{x:,}')
df['col'] = df['col'].apply('{:,}'.format)
df['col'] = df['col'].apply(lambda x: f'{x:,}')
步骤
df.applymap()
将函数应用于数据框中的每个单元格int
或float
类型f'{x:,d}'
格式化数字,对浮点数使用f'{x:,f}'
格式化数字这里是一个仅针对整数的简单示例:
df = df.applymap(lambda x: f'{x:,d}' if isinstance(x, int) else x)