使用For循环在dataFrame中查找float

时间:2017-04-14 07:24:40

标签: python pandas numpy for-loop

我有一个函数,我将迭代查找浮点数的第一个实例,然后打印'我们获利“。在下面的情况下,我想从WAP列找到8.49并停止查看。我收到错误消息: for x in profit_Price: TypeError:'numpy.float64'对象不可迭代

profit_Price = round((Wap_price * 0.020) + Wap_price,2)

def profit_stop(x):

    for x in profit_Price:
        if x == 8.49:
            print('we hit profit')
    else:
        return x

#calls the above function 'profit_stop'
df['WAP'].apply(profit_stop)

2 个答案:

答案 0 :(得分:2)

如果你的目的是比较,你不应该担心停止(除非你的DataFrame真的很大)。 pandas依赖于numpy比较,这种比较非常有效,并且比Python for循环运行得更快。

运行df['WAP'] == 8.49np.close(df['WAP'], 8.49)将为True中的每个元素返回一个布尔数组(False / series)。您可以使用它来过滤series以获取所需的值:

df[np.close(df['WAP'], 8.49)]

这将返回仅包含WAP为8.49的行的DataFrame

答案 1 :(得分:0)

.controller('TableController', ['$rootScope', '$scope', '$http', 'Table', '$stateParams', '$filter', '$window',
function ($rootScope, $scope,$http, Table, $stateParams, $filter, $window) {

    $scope.filterState = 'All';
    $scope.getState = function(value){
        $scope.filterState = value.state;
        $scope.FilterStateFunction = {
            State: value.state
        };
        var param = value.state;
        alert(param); //it does alert 'New York'
        $rootScope.$emit("CallParentMethod", function(param){});
    }
])

这应该在接近8.49时停止。