在条件中合并来自两个不同数据框的两列,python

时间:2019-05-11 15:01:52

标签: python pandas dataframe

输入:

df1:
name, msg_time, age
adam,22-00-11, Nan
susam,23-00-14,Nan

df2:
name, age
adam, 23

我想将msg_time中的df1df['age']添加到name

输出:

df2:

name, age
adam, 23,22-00-11

我的代码:

df2=df2.assign(age=lambda x: x.age +','+df1.msg_time)

我的问题是,我收到了:

df2:
name, age
adam, 23,22-00-11,22-00-11,22-00-11,22-00-11

3 个答案:

答案 0 :(得分:2)

您可以在namejoinmerge并用,分隔感兴趣的字段:

(df1.merge(df2, on='name')
    .set_index('name')[['age_y', 'msg_time']]
    .astype(str)
    .apply(','.join, axis=1)
    .rename('age')
    .reset_index())

   name          age
0  adam  23,22-00-11

答案 1 :(得分:2)

我正在使用combine_first

df2.set_index('name').combine_first(df1.set_index('name')).dropna().astype(str).apply(' '.join,1).to_frame('age')
                age
name               
adam  23.0 22-00-11

答案 2 :(得分:1)

您可以使用series.map()并将其转换为字符串,然后再使用astype(str)进行连接:

df2.age=df2.age.astype(str)+','+df2.name.map(df1.set_index('name')['msg_time']).astype(str)
print(df2)

   name          age
0  adam  23,22-00-11