[英]Pandas DataFrame to Latex Formatter Functions
我正在嘗試使用格式化程序 function 將 DataFrame 導出到 Latex 以指定列的格式。 到目前為止,我使用 function 來指定每一列的格式。 我有以下代碼片段,效果很好。
def use_f_2(x):
return "%.2f" % x
df.to_latex(formatters=[None, use_f_2, use_f_2])
這會將第 2 列和第 3 列中的值四舍五入到小數點后第二位。 現在我想擴展這個 function 以額外保持小數位數靈活(在上述情況下固定為 2)。 我會想象它是這樣的
def use_f_2(x, num_decimals):
return f"%.{num_decimals}f" % x
但是這個function不能用在
df.to_latex(formatters=[None, use_f_2, use_f_2])
因為現在有兩個 arguments。
有誰知道如何實現這個?
提前謝謝了!
可以使用functools
的partial
:
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_prec, inner_form)
return partial(create_formatter, inner_prec=precision, inner_form=num_format)
使用每列的首選數字類型和小數位數應用 function
df.to_latex(formatters=[None, format_num(4, "g"), format_num(2, "f")])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.