猴子补丁:在导入时修改值\计数函数

2024-04-26 11:19:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更改pandas中的value_counts函数,并试图找出它不起作用的原因

如果我这样做

>>> import pandas as pd
>>> pd.core.algorithms.value_counts = None

>>> pd.Series([1,2,3]).value_counts()

3    1
2    1
1    1
dtype: int64

我希望有一个TypeError

然而,如果我这样做

>>> import pandas as pd
>>> pd.core.base.value_counts = None #or a modified function

>>> pd.Series([1,2,3]).value_counts()

TypeError: 'NoneType' object is not callable

我得到了TypeError

这种行为差异的原因是什么? 如何修改pd.core.algorithms.value_counts函数,使其改变所有使用它来构造value_counts方法的类的行为


Tags: 函数coreimportnonepandasvalueas原因
1条回答
网友
1楼 · 发布于 2024-04-26 11:19:23

你能试着用pd.core.base.IndexOpsMixin.value_counts = None

这使得pd.Series.value_countspd.Index.value_counts都成为None。你还有什么要看的吗

说明:

pd.core.base中有一个导入from pandas.core.algorithms import duplicated, unique1d, value_counts

所以,pd.core.base.value_counts = pd.core.algorithms.value_counts

现在,即使将pd.core.algorithms.value_counts设为None,在base中的value_counts对象仍然包含旧的value_counts函数。所以,这是行不通的

显然,如果你直接pd.core.base.value_countsNone,那就行了

这与我的解决方案实际上是一样的,因为pd.core.base.IndexOpsMixin.value_counts只返回pd.core.base.value_counts

相关问题 更多 >