1

I have 2 dataframes and I need to be able to classify the users on both of them. The easiest way I can think of to do this is to combine them and run the filter to get the classified users. The problem I'm having is the actual combining. I have to assume that the index's won't match up on both dataframes.

Sample data:

df1 = pd.DataFrame([{ "user" : "ewrgw4t",
         "var1" : "wgw3tg"},
       { "user" : "wegrer",
         "var1" : "khjnjnb"}])

df2 = pd.DataFrame([{ "user" : "ewrgw4t",
         "var2" : "wegwhq"},
       { "user" : "wegrer",
         "var2" : "fbdbda"}])

I tried df3 = df1['user'].map(df2['user'])

but it returned a series of NaNs

My expected outcome:

df3 = [{"user" : "ewrgw4t",
        "var1" : "wgw3tg",
        "var2" : "wegwhq"},
       {"user" : "wegrer",
        "var1" : "khjnjnb",
        "var2" : "fbdbda"}]
FallingInForward
  • 285
  • 2
  • 4
  • 12

1 Answers1

1

You can use

pd.merge(df1, df2, on='user').to_dict(orient='records')

Output:

[{'user': 'ewrgw4t', 'var1': 'wgw3tg', 'var2': 'wegwhq'},
 {'user': 'wegrer', 'var1': 'khjnjnb', 'var2': 'fbdbda'}]
timgeb
  • 76,762
  • 20
  • 123
  • 145