У меня есть 2 кадра данных, например:
import pandas as pd
data1 = {'Col1':['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
'Col2':[3.409836, 2.930693, 2.75, 3.140845, 2.971429, 2.592593, 2.6, 3.1875, 2.857143, 0.714286]}
df1 = pd.DataFrame(data1, columns=['Col1', 'Col2'])
data2 = {'Col1':['B', 'F', 'I'],
'Col2':[23.45, 32.57, 19.85]}
df2 = pd.DataFrame(data2, columns=['Col1', 'Col2'])
![enter image description here](https://i.stack.imgur.com/DfdvT.png)
Я хочу изменить значения Col2
в df1
с помощьюзначения от df2
.Это мой код для этого:
for i in range(len(df2)):
for j in range(len(df1)):
if df2['Col1'][i]==df1['Col1'][j]:
df1['Col2'][j]=df2['Col2'][i]
Код работает:
![enter image description here](https://i.stack.imgur.com/j02mS.png)
Но проблема в том, что этот код будетбыть медленным для больших фреймов данных, поскольку это имеет сложность O(len(df1)*len(df2))
.Как объединить 2 кадра данных более быстрым и эффективным способом?
Я попытался объединить кадры данных с помощью внешнего объединения, но он не дает правильного результата - он сохраняет оба значения:
pd.merge(df1, df2, how='outer')
![enter image description here](https://i.stack.imgur.com/5mq2l.png)
Внутреннее объединение создает пустой кадр данных, левое объединение создает тот же кадр данных, что и df1
, а правое объединение создает тот же кадр данных, что и df2
.