python数据帧行:行+;n>;行中的值,将变量设置为

python数据帧行:行+;n>;行中的值,将变量设置为,python,pandas,labels,Python,Pandas,Labels,我正在使用熊猫数据帧。我正在尝试创建一个新的列data['Labels'],它包含由列data['diff']中的行I和行I+n之间的值的变化确定的标签,用于数据帧的整个长度 我想象以下情况,但这是返回给我的错误: for i in range(len(data['diff'])-1): data.loc[data['diff'][i] >= data['diff'][i+n], 'Labels'] = 'A' data.loc[data['diff'][i] < d

我正在使用熊猫数据帧。我正在尝试创建一个新的列data['Labels'],它包含由列data['diff']中的行I和行I+n之间的值的变化确定的标签,用于数据帧的整个长度

我想象以下情况,但这是返回给我的错误:

for i in range(len(data['diff'])-1):
    data.loc[data['diff'][i] >= data['diff'][i+n], 'Labels'] = 'A'
    data.loc[data['diff'][i] < data['diff'][i+n], 'Labels'] = 'B'

如果我理解正确,如果以下任何行中的值较高,您希望将标签设置为
A

您可以使用
cummax
获得剩余行的最大值。但是,您需要首先还原索引,否则
cummax
将返回前面行的最大值。您可以使用
.iloc[:-1]

df['following_max'] = df['diff'].iloc[::-1].cummax().iloc[::-1]
然后,每当以下最大值大于当前值时,应用标签
A

df['Labels'] = np.where(df['diff'] < df['following_max'], 'A', 'B')
df['Labels']=np.其中(df['diff']
您只需执行
数据['Labels']=np.where(数据['diff']>=data['diff'].shift(),'A','B')
您好,谢谢!这对于比较i和i+1非常有用,但是我刚刚意识到我希望转换也包括data['diff'][i]>=data['diff][i+n]的可能性。基本上,我想根据数据['diff']时间序列中任何地方的更改来创建一个标签。更改您的需求是不好的,因此,您的评论还需要进一步解释是不是
n
修复了?或者您想将
i
与一系列行进行比较吗?IIUC然后只需将
n
传递到
shift
即可,例如
。shift(n)
抱歉,我是新手。我已将问题的标题改为相关的。n不是固定的,但它必须大于i。因此,是的,我想将数据['diff'][I]与下面任何一行的值进行比较。
df['Labels'] = np.where(df['diff'] < df['following_max'], 'A', 'B')