удалить строку во время цикла в панде - PullRequest
0 голосов
/ 25 марта 2019

Я хочу удалить строку в кадре данных в цикле / итерации после того, как я использую строку для некоторого вычисления и генерирую новые строки, вот код для итерации:

for i,row in df_1_filtered.iterrows():
    if row.notnull()['Slutdato']: 
        date_range =row['Slutdato']-row['Indrykningsdato']
        for d in range(date_range.days+1):
            #generate rows with data from the row
            df_temp=pd.DataFrame(data=d_t)
            df_1_filtered=df_1_filtered.append(df_temp)
       # if i dont have drop, the dataframe will have the row and generated rows 
        df_1_filtered.drop(df_1_filtered.index[i], inplace=True) 

Если я добавлю df_1_filtered.drop(df_1_filtered.index[i], inplace=True) для внутреннего цикла for, я получу пустой файл, если я поставлю df_1_filtered.drop(df_1_filtered.index[i], inplace=True) после цикла for. Это удаляет все строки, которые я генерирую в цикле. Почему так, как правильно отбросить строку

1 Ответ

0 голосов
/ 27 марта 2019

Я закончил с созданием пустого df и использовал if else для добавления всех строк.

df_spread_enddate=pd.DataFrame()
for i,row in df_1_filtered.iterrows():

    if row.notnull()['Slutdato']: 
        date_range =(row['Slutdato']-row['Indrykningsdato']).days+1
        b_avg=row['Bruttopris']/date_range
        n_abg=row['Net-net kunde']/date_range
        for d in range(date_range):
            #generate rows with data from the row
            df_temp=pd.DataFrame(data=d_t)
            df_spread_enddate=df_spread_enddate.append(df_temp)
        #df_1_filtered=df_1_filtered.drop(df_1_filtered.iloc[i:], inplace=True)
    else:
        df_spread_enddate=df_spread_enddate.append(row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...