在条件下,从两个不同的数据范围合并了两个列,Python



输入:

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

我想为特定的name

msg_timedf1添加到df['age']

输出:

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

您可以在 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

我正在使用 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

您可以使用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

最新更新