Как перебрать каждую строку одного кадра данных и сравнить со строками в другом кадре в Python? - 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

Я хочу перебрать каждую строку в DF1 с каждой строкой в ​​DF2 ипосмотрите, есть ли это в DF2, что-то вроде:

for row in results_01.iterrows():
    diff = []
    if row not in results_02:
        add different one to 'diff'
        print(diff)

Я знаю логику, но не знаю, как это сделать, плохо знакомый с Python, кто-нибудь может мне помочь? Большое спасибо.

Ответы [ 3 ]

1 голос
/ 21 октября 2019

Вы можете легко сделать это с помощью 'внутреннего' слияния.

intersect = pd.merge(df1, df2, how='inner')

Редактировать:

Оказывается, что строки в df1, а не вРазыскиваются df2, а не перекресток. В этом случае следует использовать метод isin pandas. Вот SO ссылка , которая занимается этим.

0 голосов
/ 21 октября 2019

Блок кода, который у вас есть, очень похож на то, что вы делаете в python. Возьмите строку из одного фрейма данных и переберите другой фрейм данных, чтобы найти совпадения.

for index, row in results_01.iterrows():
    diff = []
    compare_item = row['col_name'] 
    for index, row in results_02.iterrows():
       if compare_item == row['compare_col_name']:
           diff.append(compare_item, row['col_name']
    return diff 

Здесь я беру определенное значение столбца из строки одного фрейма данных и сравниваю его с другим значением из другого фрейма данных

0 голосов
/ 21 октября 2019

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

full_df = df1.append(df2)
full_df = full_df.drop_duplicates(keep=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...