2017-07-10 7 views
-1

Angenommen wir haben zwei Spalten in zwei Datenrahmen, die Spalten sind gleich, aber die Größe ist unterschiedlich. Wie vergleichen wir zwei Spalten und haben die Indizes der gleichen Werte in beiden? df1 und df2, alter ist in zwei üblich, aber der df1 hat 1000 Zeilen und der df2 hat 200 Zeilen - ich möchte die Indizes von Zeilen haben, die den selben Alterswert haben?Pandas vergleichen zwei Spalte mit unterschiedlicher Größe

+0

So beide Spalten in Frage Altersdaten haben - das gleiche Format und alles? – Ksofiac

+0

Ja, sie haben das gleiche Format und alles außer der Anzahl der Zeilen. – sunny

Antwort

1

Sie können .loc für Index Kennzeichnung verwenden:

df1.age < df2.loc[df1.index].age 

Beispiel:

df1 = pd.DataFrame({'age':np.random.randint(1,10,10)}) 

df2 = pd.DataFrame({'age':np.random.randint(1,10,20)}) 

Ausgang:

0  True 
1  True 
2 False 
3  True 
4  True 
5 False 
6 False 
7  True 
8 False 
9 False 
Name: age, dtype: bool 

alles in einem Datenrahmen Get:

df1.assign(age_2=df2.loc[df1.index],cond=df1.age < df2.loc[df1.index].age) 

Ausgang:

age age_2 cond 
0 3  5 True 
1 3  8 True 
2 6  6 False 
3 4  7 True 
4 4  7 True 
5 5  2 False 
6 2  2 False 
7 3  7 True 
8 6  3 False 
9 5  4 False 
Verwandte Themen