如何解决Pandas DataFrame 到 Latex 格式化函数
我正在尝试使用格式化程序函数将 DataFrame 导出到 Latex 以指定列的格式。 到目前为止,我使用了一个可用于指定每列格式的函数。 我有以下代码片段可以正常工作。
def use_f_2(x):
return "%.2f" % x
df.to_latex(formatters=[None,use_f_2,use_f_2])
这会将第 2 列和第 3 列中的值四舍五入到小数点后第二位。 现在我想扩展这个函数来额外保持小数位数的灵活性(在上面的场景中固定为 2)。我会想象它是这样的
def use_f_2(x,num_decimals):
return f"%.{num_decimals}f" % x
但是这个功能不能用于
df.to_latex(formatters=[None,use_f_2])
因为现在有两个参数。
有人知道如何实现吗?
非常感谢!
解决方法
可以使用 partial
中的 functools
:
import pandas as pd
import numpy as np
from functools import partial
def use_f_2(x,num_decimals):
return f"%.{num_decimals}f" % x
# the number of columns can be passed to this function
use_f = lambda x: partial(use_f_2,num_decimals=x)
df = pd.DataFrame(np.random.rand(10,3))
df.to_latex(formatters=[None,use_f(2),use_f(3)])
,
我重新安排并扩展了 SultanOrazbayev 的想法,并添加了指定格式类型的机会:
from functools import partial
# This function returns a function which formats numbers according to the specified string operations.
# Inputs
# - precision: integer -> accuracy to be shown (e.g. number of decimal places if format type is "f" or number of significant digits if format type is "g")
# - num_format: string -> format type
def format_num(precision,num_format):
def create_formatter(num,inner_prec,inner_form):
return "{:.{}{}}".format(num,inner_form)
return partial(create_formatter,inner_prec=precision,inner_form=num_format)
使用每列的首选数字类型和小数位数应用函数
df.to_latex(formatters=[None,format_num(4,"g"),format_num(2,"f")])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。