2015-10-27 6 views
1

У меня есть четыре столбца в двух DataFrames, и я хочу проверить, совпадают ли id1 = id2 и count1 = count2 в столбцах, и результат равен 1, если они совпадают или 0, если они этого не делают. Однако мой код возвращает только 0. Я думаю, что он не перебирает один за другим и делает это в разных номерах строк. Я пытался закрепить нужные столбцы, но я не вижу никакой разницы. У тебя есть идеи? Спасибо!Сравнение столбцов pandas

import pandas as pd 
file1 = 'file1.csv' 
file2 = 'file2.csv' 

df1 = read_csv(file1) 
df1 = read_csv(file2) 

id1 = df1['id1'] 
count1 = df1['count1'] 
id2 = df2['id2'] 
count2 = df2['count2'] 

newresult = pd.concat([id1, count1, id2, count2], axis = 1) 
id1 = zip(df1['id1']) 
count1 = zip(df1['count1']) 

newresult['compare'] = newresult.apply(lambda x: 1 if x['id1'] == x['id2'] and x['count1'] == x['count2'] else 0, axis = 1) 

ответ

2
import pandas as pd 
import numpy as np 

df = pd.DataFrame(np.random.randint(0, 2, (50, 4)), columns=["id1", "id2", "count1", "count2"]) 
df["compare"] = ((df.id1==df.id2) & (df.count1==df.count2)).astype(int) 

enter image description here

+0

Это на самом деле работает! Можете ли вы дать мне небольшое объяснение, что вы сделали с np.random.randint (0, 2, (50, 4))? –

+1

Я просто использую 'np.random.randint (0, 2, (50, 4))' для создания случайных данных для примера. Здесь этот оператор возвращает массив 2d с 50 строками и 4 столбцами со случайными целыми значениями между 0 и 2. 'np.random.randint (0, 2, (50, 4))' может быть содержимым ваших файлов csv , – Euclides