Python 如何基于另一个数据帧更快地更新数据帧列?

Python 如何基于另一个数据帧更快地更新数据帧列?,python,pandas,dataframe,Python,Pandas,Dataframe,我正在使用下面的代码根据另一个数据帧更新数据帧。然而,它的速度非常缓慢。我正在寻找解决办法 for inx, row in df1.iterrows(): dfTmp = df2.loc[df2['KANR'].astype(str) == row['KANR']] if dfTmp.empty: continue if dfTmp.loc[dfTmp['STATUS'] == "F5"].empty is False: timestam

我正在使用下面的代码根据另一个数据帧更新数据帧。然而,它的速度非常缓慢。我正在寻找解决办法

for inx, row in df1.iterrows():
    dfTmp = df2.loc[df2['KANR'].astype(str) == row['KANR']]
    if dfTmp.empty:
        continue

    if dfTmp.loc[dfTmp['STATUS'] == "F5"].empty is False:
        timestamp = "%s %s" % (dfTmp.loc[dfTmp['STATUS'].astype(str) == "F5"].iloc[0, ]["Date"],
                               dfTmp.loc[dfTmp['STATUS'].astype(str) == "F5"].iloc[0, ]["Time"])
        df1.set_value(inx, 'F5', timestamp)
您可以使用merge,它针对速度进行了优化,并且对于此类匹配任务(类似于这样的任务)会更快,假设您没有每个KANR的重复日期时间:


如果提供df.head和预期输出,通常会更容易
df2['F5'] = df2['Date'].astype(str) + " " + df2['Time'].astype(str)
to_join = df2.loc[df2['STATUS'].astype(str) == 'F5', ['F5', 'KANR']].groupby('KANR').head(1)
df1.merge(to_join, how='left', on = 'KANR')