2017-02-21 6 views
0

次のコードを使用して、別のデータフレームに基づいてデータフレームを更新しています。しかし、それは劇的に遅いです。私は解決策を探しています。別のデータフレームに基づいてpandasデータフレーム列を高速に更新するにはどうすればよいですか?

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) 
+2

df.head()と期待される出力 – Vaishali

答えて

1

あなたは、各KANRの日付時刻を重複していませんと仮定すると、速度のために最適化されており、マッチタスクのこの種のためにはるかに高速になりますこれは、このような何かをmergeを使用することができます。

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') 
関連する問題