объединить два столбца из двух разных фреймов данных в условиях Python - PullRequest
2 голосов
/ 11 мая 2019

ввод:

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

выход: * +1010 *

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 ]

2 голосов
/ 11 мая 2019

Я использую 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 голосов
/ 11 мая 2019

Вы можете merge на name и join поля интереса, разделенные ,:

(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 голос
/ 11 мая 2019

Вы можете сделать это, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...