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

2024-06-06 02:43:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用下面的代码来更新基于另一个数据帧的数据帧。然而,这是惊人的缓慢。我在寻找解决办法。你知道吗

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)

Tags: 数据ifstatusf5loctimestampemptyrow
1条回答
网友
1楼 · 发布于 2024-06-06 02:43:25

您可以使用merge,它针对速度进行了优化,对于这种匹配任务,它会快得多,假设每个KANR没有重复的日期时间:

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

相关问题 更多 >