Я пытаюсь сравнить два DataFrames, я буду sh, чтобы эффективно использовать pandas (or numpy)
вместо вложенного для l oop с оператором if в нем для решения конкретной проблемы. Ниже приведен небольшой фрагмент моей программы.
spindleload = {'time': ['2020-02-03 00:18:07', '2020-02-03 00:18:08', '2020-02-03 00:18:09', '2020-02-03 00:18:10', '2020-02-03 00:18:11', '2020-02-03 00:18:12', '2020-02-03 00:18:13', '2020-02-03 00:18:14', '2020-02-03 00:18:15', '2020-02-03 00:18:16', '2020-02-03 00:18:17'],
'value': [17,25,14,14,22,22,22,22,22,12,19]}
df1 = pd.DataFrame(data=spindleload)
cycletime = {'newtimestart': ['2020-02-03 00:18:08','2020-02-03 00:18:13'], 'newtimeend': ['2020-02-03 00:18:11', '2020-02-03 00:18:15']}
df2 = pd.DataFrame(data=cycletime)
Теперь я получу sh до l oop, чтобы получить время и значение в df1 для соответствующих значений между newtimestart и newtimeend in df2 . Ниже приведен код.
output_graph_time = []
output_graph_value = []
for i in range(len(df2)):
for j in range(len(df1)):
if df1['time'][j] >= df2['newtimestart'][i]:
output_graph_time.append(df1['time'][j])
output_graph_value.append(df1['value'][j])
if df1['time'][j] == df2['newtimeend'][i]:
break
print(output_graph_time)
print(output_graph_value)
Теперь здесь код работает нормально, но когда он читает миллионы строк данных, которые он не может выполнить, я также пытался реализовать Numba
, но ядро не смогло обрабатывать и перезапускать. Поэтому я прошу решить эту проблему, используя Numpy или Pandas метод векторизации .
В дополнение к этому, когда я попытался применить метод векторизации, я обнаружил трудности в нарушение условия после каждого выполнения.