У меня есть два кадра данных.
DF1:
Page LineNum Value
1 1 0.5
1 2 0.6
1 3 0.7
2 1 0.9
2 2 0.4
DF2: Исходный кадр данных состоит из первых трех столбцов, и мне нужно сгенерировать четвертый столбец с именем New_Value.
Page LineNum Word New_Value
1 1 g1 0.5
1 1 g2 0.5
1 1 g3 0.5
1 1 g4 0.5
1 2 g5 0.6
1 2 g6 0.6
1 3 g7 0.7
1 3 g8 0.7
...
Мне нужно сгенерировать четвертый столбец DF2, который фактически отображается из уникальных значений DF1 «Page» и «LineNum». В DF2 значения просто повторяются в соответствии с уникальными значениями в DF1 относительно «Page» и «LineNum».
В настоящее время я делаю это с помощью цикла for:
for index, row in DF1.iterrows():
DF2.ix[((DF2['Page'] == row['Page']) & (DF2['LineNum'] == row['LineNum'])),['New_Value']] = row['Value']
Это работает абсолютно нормально, но оба кадра данных очень большие. Поэтому мне нужна какая-то оптимизированная функция, возможно, с использованием groupby и lambda, но я не смог придумать точную функцию.
Пожалуйста, предложите оптимизированную версию без цикла For.
пожалуйста, прокомментируйте, если есть что-то еще, что я должен объяснить по этому поводу.
Я использую Python3 и панд.