如何让pandas的pd.crosstab默认启用margins=True?
修改pd.crosstab默认参数的问题与解决方法
pd.crosstab默认不会显示汇总边距,它的参数定义如下:
pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)
想修改它的默认行为,让margins参数默认值变为True,但尝试用partialmethod修改时触发错误:TypeError: 'partialmethod' object is not callable。
问题根源
partialmethod是用来修改类的实例方法默认参数的工具(比如之前修改pd.DataFrame.sort_values的例子,这是DataFrame类的方法),但pd.crosstab是一个独立的普通函数,不属于任何类的方法,所以用partialmethod会报错。
正确解决方式
改用functools.partial来修改普通函数的默认参数,代码示例:
from functools import partial import pandas as pd # 把pd.crosstab的默认margins设为True pd.crosstab = partial(pd.crosstab, margins=True)
修改后,每次调用pd.crosstab时都会默认启用汇总边距,不用再手动指定margins=True。
内容的提问来源于stack exchange,提问作者Aditya D Modak
相关产品推荐
相关产品推荐

