#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. Спасибо за ответ. Оба ответа сработали для меня