Добавьте новые столбцы и добавьте значения из другого фрейма данных на основе фильтра

#python #pandas

#питон #панды

Вопрос:

Добавьте новые столбцы и добавьте значения из другого фрейма данных на основе фильтра:

У меня есть два кадра данных следующим образом: infra_df:-

 Name time   net 8am  stat 8am  net 8am  net 8am  sig 8am  net 8am  

measure_df:-

 tcp_time. tcp_wait   12 33  22 11  23 32  34 11     

Теперь я хочу добавить столбцы из measures_df в infra_df для строк везде, где имя net, и NAN везде:-

result_df:-

 Name time tcp_time tcp_wait  net 8am 12 33  stat 8am NAN NAN  net 8am 22 11  net 8am 23 32  sig 8am NAN NAN  net 8am 34 11  

Комментарии:

1. Таким образом, вы предполагаете, что measure_df будет иметь такое же количество строк, как infra_df имеет чистые строки?

2. да. но после исключения NaN в measures_df

Ответ №1:

Если длина measure_df такая же, как и количество net infra_df используемых значений:

 m = infra_df['Name'].eq('net') df = pd.concat([infra_df, measures_df.set_index(m.index[m])], axis=1) print (df)  Name time tcp_time. tcp_wait 0 net 8am 12.0 33.0 1 stat 8am NaN NaN 2 net 8am 22.0 11.0 3 net 8am 23.0 32.0 4 sig 8am NaN NaN 5 net 8am 34.0 11.0  

Ответ №2:

Индекс примеров с именем net в качестве:

 idx = intra_df.loc[intra_df["Name"].eq("net")].index  

Мы объединяем с measure_df с измененным индексом:

 intra_df = pd.concat([intra_df, measures_df.iloc[:len(idx),:].set_index(idx)], axis=1)  

Я также добавил iloc на случай, если в measures_df будет больше строк, чем net в intra_df.

.dropna() удаляет все строки nan, если это то, что вам нужно.

Комментарии:

1. Спасибо за ответ. Оба ответа сработали для меня