import pandas as pd
import numpy as np
sep = ' '
df1 = pd.DataFrame({
'total_acc': range(0, 5),
'mort_acc': ["25.0 0.0", "27.0 3.0", "26.0 0.0", "13.0 0.0", "43.0 1.0"],
})
# разбиваем колонку mort_acc на две новые и приводим их к числовому типу (нужно для merge)
df1[['mort_acc_1', 'mort_acc_2']] = df1['mort_acc'].str.split(sep, expand=True)
df1["mort_acc_1"] = pd.to_numeric(df1["mort_acc_1"])
df1["mort_acc_2"] = pd.to_numeric(df1["mort_acc_2"])
df2 = pd.DataFrame({
'mort_acc': [13.0, 25.0, 26.0, 5.0, 6.0],
'total_acc': [0.078963, 0.052023, 0.066743, 0.103289, 0.151293],
})
# делаем merge первого и второго датафреймов
tmp = pd.merge(df1, df2, how='left', left_on='mort_acc_1', right_on='mort_acc')
# собираем новый датафрейм с нужными колонками
df = pd.DataFrame({})
df['total_acc'] = tmp['total_acc_x']
df['mort_acc'] = np.where(
pd.notnull(tmp['total_acc_y']),
tmp['mort_acc_1'].astype(str) + sep + tmp['total_acc_y'].astype(str),
tmp['mort_acc_1'].astype(str) + sep + tmp['mort_acc_2'].astype(str)
)
df