Я написал код, указанный ниже.Существует два кадра данных Pandas: df
содержит столбцы timestamp_milli
и pressure
, а df2
содержит столбцы timestamp_milli
и acceleration_z
.Оба кадра данных имеют около 100 000 строк.В приведенном ниже коде я ищу каждую временную метку каждой строки df
строк df2
, где разница во времени находится в пределах диапазона и минимальна.
К сожалению, код крайне медленный.Кроме того, я получаю следующее сообщение, исходящее из строки df_temp["timestamp_milli"] = df_temp["timestamp_milli"] - row["timestamp_milli"]
:
SettingWithCopyWarning: пытается установить значение для копии фрагмента из DataFrame.Попробуйте вместо этого использовать .loc [row_indexer, col_indexer] = значение
Как ускорить код и устранить предупреждение?
acceleration = []
pressure = []
for index, row in df.iterrows():
mask = (df2["timestamp_milli"] >= (row["timestamp_milli"] - 5)) & (df2["timestamp_milli"] <= (row["timestamp_milli"] + 5))
df_temp = df2[mask]
# Select closest point
if len(df_temp) > 0:
df_temp["timestamp_milli"] = df_temp["timestamp_milli"] - row["timestamp_milli"]
df_temp["timestamp_milli"] = df_temp["timestamp_milli"].abs()
df_temp = df_temp.loc[df_temp["timestamp_milli"] == df_temp["timestamp_milli"].min()]
for index2, row2 in df_temp.iterrows():
pressure.append(row["pressure"])
acc = row2["acceleration_z"]
acceleration.append(acc)