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')