У меня есть некоторый фрейм данных.Я хочу найти строки, которые соответствуют определенному условию, и дать этим строкам значение из следующей строки.
Пример:
У меня есть следующее df
>>> df = pd.DataFrame({"ID":range(1,11), "Label":["ABC","BBC","DAH","ACDC","CBA","DBS","HTG","PPP","HLM","AAA"]})
>>> df
ID Label
0 1 ABC
1 2 BBC
2 3 DAH
3 4 ACDC
4 5 CBA
5 6 DBS
6 7 HTG
7 8 PPP
8 9 HLM
9 10 AAA
Я хочу изменить идентификатор строк, где «Метка» содержит букву «H», на идентификатор следующей строки, поэтому он будет выглядеть следующим образом:
>>> df
ID Label
0 1 ABC
1 2 BBC
2 4 DAH
3 4 ACDC
4 5 CBA
5 6 DBS
6 8 HTG
7 8 PPP
8 10 HLM
9 10 AAA
Я пробовал это:
df.loc[df["Label"].str.contains("H"),"ID"] = df[df["Label"].str.contains("H").shift().fillna(False)]["ID"]
но в ячейках вместо идентификаторов помещается NaN
>>> df
ID Label
0 1.0 ABC
1 2.0 BBC
2 NaN DAH
3 4.0 ACDC
4 5.0 CBA
5 6.0 DBS
6 NaN HTG
7 8.0 PPP
8 NaN HLM
9 10.0 AAA
Есть ли способ сделать это?предпочтительно в одну строку (или, по крайней мере, без необходимости повторять строку за строкой)