【发布时间】:2018-10-03 08:51:28
【问题描述】:
我有 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'])
我想用df2 中的值修改df1 中Col2 的值。这是我的代码:
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]
代码有效:
但问题是,此代码对于大型数据帧会很慢,因为它具有复杂性O(len(df1)*len(df2))。如何以更快、更有效的方式合并这 2 个数据帧?
我尝试使用外连接合并数据帧,但它没有产生正确的结果 - 它保留了两个值:
pd.merge(df1, df2, how='outer')
内连接产生一个空白数据框,左连接产生与df1相同的数据框,右连接产生与df2相同的数据框。
【问题讨论】:
标签: python pandas dataframe join merge