Я бы хотел поработать над значением из фрейма данных pandas, которые определены как одинаковые на основе двух столбцов в фрейме данных. Я не мог найти эффективный способ для этой цели. Пожалуйста, см. Следующее объяснение кода.
В кадре данных df ниже показана информация о ветвях, которые связаны между первым узлом в a и вторым узлом в b.
В первых двух строках df показана ветвь, связанная с: (Nod1, Nod2) и (Node2, Nod1). Эти два считаются одними и теми же ветвями, и я хочу добавить значение c для них обоих: 0,15 + 0,152.
Я подумал, что смогу сделать это, соединив эти два с помощью zip иработать с этими парами (не имеет значения последовательность узлов). Однако я не смог бы найти хороший путь для этой цели без петли.
Есть ли способ достичь моей цели? например, проверяя только запись в столбце «uniq», но игнорируя последовательность узлов в нем, чтобы получить значение c.
a = ['Nod1', 'Nod2', 'Node3', 'Node1']
b = ['Nod2', 'Nod1', 'Node4', 'Node5']
c = [0.15, 0.152, 0.23, 0.24]
df = pd.DataFrame({'a': a, 'b':b, 'c':c})
print(df)
a b c
0 Nod1 Nod2 0.150
1 Nod2 Nod1 0.152
2 Node3 Node4 0.230
3 Node1 Node5 0.240
#-------------------------------------------------------------
d = [j for j in zip(a, b)]
df['uniq'] = d
print (df)
a b c uniq
0 Nod1 Nod2 0.150 (Nod1, Nod2)
1 Nod2 Nod1 0.152 (Nod2, Nod1)
2 Node3 Node4 0.230 (Node3, Node4)
3 Node1 Node5 0.240 (Node1, Node5)