Как сравнить фрейм данных как небольшую группу в пандах? - PullRequest
1 голос
/ 21 октября 2019

У меня есть два кадра данных, как это:

DF1:

ID     v1           v2         v3
289  1455.0        2.0        0.62239  
289  1460.0        0.0        0.46037  
289  1465.0        4.0        0.41280 
290  1470.0        0.0        0.39540 
290  1475.0        2.0        0.61809 
290  1475.0        2.0        0.61809

DF2:

ID     v1           v2         v3
289  1423.0        2.0        0.62239  
289  142Q.0        0.0        0.46037  
289  14FW.0        4.0        0.41280  
290  14Q3.0        0.0        0.39540  
290  1453.0        2.0        0.61809 
290  1454.0        2.0        0.61809

Я хочу сравнить строки, которые содержат один и тот же идентификатор в целом (то есть: когда я сравниваю первые три строки между двумя df, я нене заботясь о порядке строки, просто хочу уточнить другое значение), теперь мой метод дает мне результаты сравнения построчно, это может иметь проблему:

, если 1-я строка df1так же, как 2-й ряд df2, 3-й ряд df1 такой же, как 1-й ряд df2, а 2-й ряд df1 такой же, как 3-й ряд df2, это означает, что первые три строки одинаковы,но используя мой метод (сравнивая строку за строкой), я получаю разницу между каждой строкой.

Может ли кто-нибудь помочь мне с этим? Большое спасибо.

Вот что я попробовал и ошибка:

resultBool01 = (DF1 != DF2).stack()  # Create Frame of comparison booleans
resultdiff01 = pd.concat([DF1.stack()[resultBool01], DF2.stack()[resultBool01]], axis=1)
resultdiff01.columns=["output_01", "output_02"]

ValueError: cannot handle a non-unique multi-index!

Ожидаемый результат: (разные значения для каждого ID)

ID   difvar  output1     output2
289   v1       1455       1423
...