输入:
df1:
name, msg_time, age
adam,22-00-11, Nan
susam,23-00-14,Nan
df2:
name, age
adam, 23
我想为特定的name
msg_time
从df1
添加到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
您可以在 name
和 join
上 merge
,而 ,
分隔的感兴趣字段:
(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