输入:
df1:
name, msg_time, age
adam,22-00-11, Nan
susam,23-00-14,Nan
df2:
name, age
adam, 23
我想将msg_time
中的df1
从df['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
答案 0 :(得分:2)
您可以在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
答案 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