Python 我怎么做熊猫';s mean方法用于自定义类型
我正在尝试创建一个“数值”类(我们称之为Python 我怎么做熊猫';s mean方法用于自定义类型,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试创建一个“数值”类(我们称之为MyType),Panda的mean完全适用于该类 我当前的方法将MyType实现为numbers.Rational的子类 class MyType(numbers.Rational): ... 这使得Python的统计信息模块能够正常工作,没有任何问题 from statistics import mean result = mean([MyType(1), MyType(2)]) assert isinstance(result, MyType
MyType
),Panda的mean
完全适用于该类
我当前的方法将MyType
实现为numbers.Rational
的子类
class MyType(numbers.Rational):
...
这使得Python的统计信息
模块能够正常工作,没有任何问题
from statistics import mean
result = mean([MyType(1), MyType(2)])
assert isinstance(result, MyType) #passes
不幸的是,Pandas中的类似代码返回一个float,而不是MyType
的实例
result = pd.Series([MyType(1),MyType(2)]).mean()
assert isinstance(result, MyType) #fails
assert isinstance(result, float) #passes
当单步执行Panda的内部代码时,第563行的\u sure\u numeric
方法似乎将MyType
转换为nanops
模块()的nanmean
方法中的浮点。我找不到一个办法来解决这个问题
我所尝试的:
MyType
数字的子类。Real——所有计算都是正确的,但类型是错误的MyType
float的子类——所有计算都是正确的,但类型是错误的MyType
ExtensionDtype的子类——就我所知,似乎没有做任何事情cyberpandas
库为IP地址@jakub实现了类似的功能是的,我看过他们的库。他们使用的是ExtensionDtypes
,但他们的IP地址不是数字类型,所以他们从未尝试测试任何统计方法,就我所知。Panda的开箱即用的ExtensionDtypes
也都不是数字。CyberPanda的library已经为IP地址@jakub实现了类似的功能。是的,我已经查看了它们的库。他们使用的是ExtensionDtypes
,但他们的IP地址不是数字类型,所以他们从未尝试测试任何统计方法,就我所知。Panda的开箱即用ExtensionDtypes
也都不是数字。