微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-从pandas中获取上一行的值apply()函数

import pandas as pd

def greater_or_less(d):
    if d['current'] > d['prevIoUs']:
        d['result']="Greater"
    elif d['current'] < d['prevIoUs']:
        d['result']="Less"
    elif d['current'] == d['prevIoUs']:
        d['result']="Equal"
    else:
        pass
    return d

df=pd.DataFrame({'current':[1,2,2,8,7]})

# Duplicate the column with shifted values
df['prevIoUs']=df['current'].shift(1)

df['result']=""

df=df.apply(greater_or_less,axis=1)

结果是:

   current  prevIoUs   result
        1       NaN         
        2         1  Greater
        2         2    Equal
        8         2  Greater
        7         8     Less

然后,我将不再需要上一列.最后是:

   current   result
        1         
        2  Greater
        2    Equal
        8  Greater
        7     Less

如何在不添加额外列的情况下执行此操作?

我想做的是,知道如何从Greater_or_less函数中引用上一行的值.

解决方法:

使用diff()方法

import pandas as pd
import numpy as np
df=pd.DataFrame({'current':[1,2,2,8,7]})
np.sign(df.current.diff()).map({1:"Greater", 0:"Equal", -1:"Less"})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐