Python 将值与数据帧中的上一行进行比较
我有下面的DataFrame,我想创建另一列来比较col1的前一行,看看该行的值是否大于前一行的值。结果应该是这样的:Python 将值与数据帧中的上一行进行比较,python,pandas,Python,Pandas,我有下面的DataFrame,我想创建另一列来比较col1的前一行,看看该行的值是否大于前一行的值。结果应该是这样的: import pandas as pd data={'col1':[1,3,3,1,2,3,2,2]} df=pd.DataFrame(data,columns=['col1']) print df col1 0 1 1 3 2 3 3 1 4
import pandas as pd
data={'col1':[1,3,3,1,2,3,2,2]}
df=pd.DataFrame(data,columns=['col1'])
print df
col1
0 1
1 3
2 3
3 1
4 2
5 3
6 2
7 2
谢谢。通过和比较移位值,最后缺失的值将替换为-1
,如果为真
,则有效,如果所有值均为正值:
col1 match
0 1 False
1 3 False
2 3 True
3 1 False
4 2 False
5 3 True
6 2 False
7 2 True
如果需要为任何数据帧将最后一个值设置为True
:
df['match'] = df['col1'].gt(df['col1'].shift(-1, fill_value=-1))
print (df)
col1 match
0 1 False
1 3 False
2 3 True
3 1 False
4 2 False
5 3 True
6 2 False
7 2 True
它是否仅适用于
gt
?或者操作员=
也可以工作?谢谢您的及时回复。这里的另一个快速问题是:如果要将行值与自定义操作进行比较,该怎么办?如果一行的值比前一行的值大20%,则说打印“True”?@adirabargil-gt类似于
,因为=>
被使用ge
@NovaPoi-20%是否需要从值中提取20%并进行比较?不明白,我想这应该是个新问题。@NovaPoi-或者需要df['match']=df['col1'].gt(df['col1'].mul(0.2).shift(-1,fill_value=-1))
?
df['match'] = df['col1'].gt(df['col1'].shift(-1))
df.loc[df.index[-1], 'match'] = True