Найти замену значений между двумя индексами в фрейме данных Python - PullRequest
1 голос
/ 06 ноября 2019

Я новичок в питоне и пандах. Здесь у меня есть два фрейма данных, которые выглядят как

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]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...