Я новичок в питоне и пандах. Здесь у меня есть два фрейма данных, которые выглядят как
df1 =
DocumentId offset feature
0 0 2000
0 7 2000
0 16 0
0 27 0
0 36 0
0 40 0
0 46 0
0 57 0
0 63 0
0 78 0
0 88 0
0 91 0
0 103 2200
1 109 0
1 113 2200
1 126 2200
1 131 2200
1 137 2200
1 142 0
1 152 0
1 157 200
1 159 200
1 161 200
1 167 0
1 170 200
Теперь у меня есть еще один фрейм данных:
start end Previous_Three Next_Three
7.0 103.0 [2000.0, 2000.0] [2200.0, 0.0, 2200.0]
103.0 113.0 [2200.0, 0.0, 0.0] [2200.0, 2200.0, 2200.0]
137.0 157.0 [2200.0, 2200.0, 2200.0] [200.0, 200.0, 200.0]
161.0 170.0 [200.0, 200.0, 200.0] [200.0, 0.0, 200.0]
Теперь, this start and end are the offset from the first datafrmae
.
Теперь я пытаюсь заменить 0
с первого dataframe feature column
.
Теперь, если мы видим в df1 после 7
до 103
между всеми этими0
.
Теперь моя логика выглядит так: если previous_Three
и next_three
равны, тогда я заменяю все значения между ними на значения из этого массива в первом кадре данных.
Итак, если он совпадает, то вывод будет выглядеть так, как будто он совпадает (в моих данных он не совпадает),
DocumentId offset feature
0 0 2000
0 7 2000
0 16 2000
0 27 2000
0 36 2000
0 40 2000
0 46 2000
0 57 2000
0 63 2000
0 78 2000
0 88 2000
0 91 2000
0 103 2200
Итак, это будет так.
Same goes for the next start and endoffsets .values between 103 and 113 and array to check will be [2200.0, 0.0, 0.0] [2200.0, 2200.0, 2200.0]
. то, что я пробовал, это
def printfun(start,end, previous_three,next_three):
#print(np.array_equal(previous_three, next_three))
if np.array_equal(previous_three, next_three):
print('going',start)
start_index = list(final_output[final_output['OFFSET'] == start].index)[0]
end_index = list(final_output[final_output['OFFSET'] == end].index)
print(start_index)
Но не понимая. Кто-нибудь может мне с этим помочь ? для i строка в final_output.iterrows (): value = final_output.loc [start_index: end_index]