Итак, у меня есть этот фрейм данных, который содержит позиции разных точек, X, Y, Z и несколько других свойств. Затем, у меня есть еще один disctionary называется path (), который содержит различные точки, которые образуют траекторию. Эти точки включены в кадр данных.
По причинам, связанным с графиком, я хочу установить столбец "путь" равным 2 ТОЛЬКО для точек, которые находятся в пути (). Как определить, какие точки кадра данных находятся на этом пути, и изменить их атрибут «путь»?
Уточнение:
Путь примерно такой:
path = {12, 34, 14}
, а pos {} дает [x, y, z] для каждого узла пути
pos = {12: [3, 4, 2], 34: [1, 3, 4], 14: [5, 4, 5]}
где [3, 4, 2] = [x, y, z] как те, что в кадре данных. Поэтому я хочу изменить столбец «путь» в кадре данных с 1 на 2 для позиций в кадре данных, которые соответствуют этому. Так, например, если для 14: [5, 4, 55] есть строка в кадре данных с X = 5, Y = 4 и Z = 55, я хочу, чтобы эта строка имела путь = 2.
Это то, что я пытался, и я думаю, что это должно работать, но это не так. Я пытаюсь отфильтровать позицию, а затем соответствующим образом изменить фрейм данных.
(здесь я пытаюсь изменить значение с 0 на 1 вместо 1 на 2, потому что изображение df, которое я вам дал, было изменено при попытке этого, но игнорировать его)
df['path'] = np.zeros(len(df.index))
filt1 = (df['eventID'] == 98)
df_path = df[filt1]
for node in path:
A, B, C = pos[node]
filt2 = (df['X'] == A) & (df['Y'] == B) & (df['Z'] == C)
df_path[filt2]['path'].replace({0:1})
Кроме того, я получаю это предупреждение:
UserWarning:
Boolean Series key will be reindexed to match DataFrame index.
Извините, если я "нарушаю" некоторые недовольные правила, я новичок здесь. Большое спасибо
Алекс