I have two dataframes of different length in python pandas like this:
df1: df2: Column1 Column2 Column3 ColumnA ColumnB 0 1 a r 0 1 a 1 2 b u 1 1 d 2 3 c k 2 1 e 3 4 d j 3 2 r 4 5 e f 4 2 w 5 3 y 6 3 h What I am trying to do now is comparing Column1 of df1 and ColumnA of df2. For each "hit", where a row in ColumnA in df2 has the same value as a row in Column1 in df1, I want to append a column to df1 with the vaule ColumnB of df2 has for the row where the "hit" was found, so that my result looks like this:
df1: Column1 Column2 Column3 Column4 Column5 Column6 0 1 a r a d e 1 2 b u r w 2 3 c k y h 3 4 d j 4 5 e f What I have tried so far was:
for row in df1, df2: if df1[Column1] == df2[ColumnA]: print 'yey!' which gave me an error saying I could not compare two dataframes of different length. So I tried:
for row in df1, df2: if def2[def2['ColumnA'].isin(def1['column1'])]: print 'lalala' else: print 'Nope' Which "works" in terms that I get an output, but I do not think it iterates over the rows and compares them, since it only prints 'lalala' two times. So I researched some more and found a way to iterate over each row of the dataframe, which is:
for index, row in df1.iterrows(): print row['Column1] But I do not know how to use this to compare the columns of the two dataframes and get the output I desire.
Any help on how to do this would be really appreciated.