.apply()一个双变量numpy()lambda函数到 pandas DataFrame的.expanding()窗口 [英] .apply() a bivariate numpy() lambda function to an .expanding() window of a pandas DataFrame

查看:316
本文介绍了.apply()一个双变量numpy()lambda函数到 pandas DataFrame的.expanding()窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

考虑以下简单代码(loc_fun中的numpy.sum是使用numpy的更复杂的双变量函数的代表):

Consider this simple code (numpy.sum in loc_fun is a stand in for a more complicated bivariate function using numpy):

import pandas
import numpy


def loc_fun(A, B):
    return numpy.sum(A[:-1] > B[-1])


df = pandas.DataFrame(numpy.random.normal(0, 1, [100000, 2]), columns=['size_A', 'size_B']).cumsum(axis=0)
df.expanding(2).apply(lambda x: loc_fun(x.size_A.values, x.size_B.values))

上面代码中的最后一行导致我无法理解的错误. 基本上,我想将loc_fun应用于列中值的expanding()窗口.

The last line in the code above results in an error I cannot make sense of. Basically, I would like to apply loc_fun to an expanding() window of the values in the columns.

推荐答案

在lambda中,x是numpy.ndarray,因此您不能引用列"A值"或"B_values".

In lambda x is a numpy.ndarray so You can not refer to column 'A-values' or 'B_values'.

df.expanding(2).apply(lambda x: print(type(x)))

>><class 'numpy.ndarray'>

这篇关于.apply()一个双变量numpy()lambda函数到 pandas DataFrame的.expanding()窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆