在函数的列中使用非零值-Pandas

时间:2019-02-08 14:52:45

标签: python-3.x pandas function

我具有下面的数据框,并且想在函数中计算列“ animal1”和“ animal2”之间的总和之差,同时仅考虑每个“ animal1”列中大于0的值”和“ 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 :(得分:0)

我相信您需要通过测试DataFrame.gtDataFrame.all,用0检查所有行,并用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