布尔逻辑的模糊真值

2024-10-01 09:42:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在数据帧上的函数中使用一些布尔逻辑,但出现错误:

在[4]:

data={'level':[20,19,20,21,25,29,30,31,30,29,31]}
frame=DataFrame(data)
frame
Out[4]:
level
0   20
1   19
2   20
3   21
4   25
5   29
6   30
7   31
8   30
9   29
10  31

In [35]:

def calculate(x):
    baseline=max(frame['level'],frame['level'].shift(1))#doesnt work
    #baseline=x['level']+4#works
    difftobase=x['level']-baseline
    return baseline, difftobase
frame['baseline'], frame['difftobase'] = zip(*frame.apply(calculate, axis=1))#works

但是,这会引发以下错误:

^{pr2}$

我读了How to look back at previous rows from within Pandas dataframe function call?http://pandas.pydata.org/pandas-docs/stable/gotchas.html 但不知道怎么把这个应用到我的问题上?在


Tags: 数据函数indataframepandasdata错误逻辑
1条回答
网友
1楼 · 发布于 2024-10-01 09:42:00

函数max使用不当。np.最大值(也许吧最大毫安以及根据numpy文件)工程。显然普通的max无法处理数组(很容易)。替换

baseline=max(frame['level'],frame['level'].shift(1))#doesnt work

^{pr2}$

就这样。为了便于阅读,我去掉了另一部分:

In [23]:
#q 1 analysis
def calculate_rowise(x):
    baseline=np.maximum(frame['level'],frame['level'].shift(1))#works
    return baseline
frame.apply(calculate_rowise)

Out[23]:
level
0   NaN
1   20
2   20
3   21
4   25
5   29
6   30
7   31
8   31
9   30
10  31

原来的问题是隐藏了另一个问题,它在去掉函数的移位部分时出现。返回形状不匹配,但这是另一个问题,在这里提到它是为了充分披露

相关问题 更多 >