【问题标题】:Using non-zero values from columns in function - pandas使用函数列中的非零值 - 熊猫
【发布时间】:2019-02-08 14:52:45
【问题描述】:

我有下面的数据框,并想计算列 '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)

【问题讨论】:

    标签: python-3.x pandas function


    【解决方案1】:

    我相信您需要检查所有行是否大于0DataFrame.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
    

    【讨论】:

    • @I.Dragiev - 欢迎您!如果我的回答有帮助,请不要忘记accept。谢谢。
    猜你喜欢
    • 2016-01-20
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多