Использование ненулевых значений из столбцов в функции - pandas - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть приведенный ниже фрейм данных, и я хотел бы рассчитать разницу между столбцами 'animal1' и 'animal2' по их сумме в функции, принимая во внимание только значения, которые больше 0 в каждом из столбцов 'animal1'и' animal2.Как я мог это сделать?

импорт панд как pd

animal1 = pd.Series({'Cat': 4, 'Dog': 0,'Mouse': 2, 'Cow': 0,'Chicken': 3})
animal2 = pd.Series({'Cat': 2, 'Dog': 3,'Mouse': 0, 'Cow': 1,'Chicken': 2})
data = pd.DataFrame({'animal1':animal1, 'animal2':animal2})

def animals():
    data['anim_diff']=(data['animal1']-data['animal2'])/(data['animal1']+ ['animal2'])
return data['anim_diff'].abs().idxmax()

print(data)

1 Ответ

0 голосов
/ 09 февраля 2019

Я полагаю, вам нужно проверить, что все строки больше на 0 с DataFrame.gt с тестом DataFrame.all и фильтровать по boolean indexing:

def animals(data):
    data['anim_diff']=(data['animal1']-data['animal2'])/(data['animal1']+ data['animal2'])
    return data['anim_diff'].abs().idxmax()

df = data[data.gt(0).all(axis=1)].copy()
#alternative for not equal 0
#df = data[data.ne(0).all(axis=1)].copy()
print (df)
         animal1  animal2
Cat            4        2
Chicken        3        2

print(animals(df))
Cat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...