繁体   English   中英

从pandas apply()函数中获取前一行值

[英]Getting previous row values from within pandas apply() function

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

然后,我会删除previous专栏,因为它不再需要了。 结束时:

   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"})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM