У меня есть датафрейм с 2 столбцами nbr и тегом. Nbr содержит целое число, а тег содержит объект Tag.
И я хочу получить среднее значение для всего объекта тега (используя атрибут value, и в результате получим новый тег с этим значением).
Для dataframe.add
я добавил метод __add__
в класс Tag.
Пример:
import pandas as pd
class Tag(object):
def __init__(self, value):
self.value = value
def __add__(self, other):
return Tag(self.value + other.value)
a = Tag(2)
b = Tag(8)
frame = pd.DataFrame({
'tag': [a, b],
'nbr': [3, 6]
})
new_tag = frame.tag.sum()
print new_tag.value # 10
Но для frame.tag.mean()
я получаю эту ошибку TypeError: Could not convert <__main__.Tag object at 0x7f375ac460d0> to numeric
.
Панды сначала пытаются преобразовать объект в число с плавающей точкой: float(x)
, затем, если это не удается, попробуйте это: x = complex(x)
.
У меня вопрос, как заставить float(tag_object)
или complex(tag_object)
вернуть атрибут value, добавив метод в мой класс Tag, как я это сделал с __add__
?
Заранее спасибо.