我正在使用pandas数据帧。我尝试创建一个新列,数据['标签'],其中包含由列数据中行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'
示例输出:
index diff label
9 117.32 B
10 108.32 A
11 125.36 A
12 127.36 A
13 139.28 A
14 141.22 A
15 147.89 A
16 153.89 B
17 153.89 B
18 156.87 B
19 168.84 B
20 161.04 B
21 172.04 B
24 175.16 B
22 164.04 B
23 164.16 B
27 175.16 B
25 149.16 A
答案 0 :(得分:0)
如果我理解正确,如果以下任何一行中的值更高,您希望将标签设置为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')