Вы можете создать словарь из вашего df2
и затем сопоставить df1
, чтобы создать новый столбец.Если все ваши записи в BSI
имеют тот же формат, что и предоставленный, тогда просто выберите первые 2 буквы.Если это должно быть более сложным, как все до первого дефиса, тогда вы можете использовать регулярные выражения.
Вот некоторые тестовые данные
import pandas as pd
df1 = pd.DataFrame({'BSI': ['AA-010', 'AA-030', 'AA-180', 'AA-200', 'AA-220'],
'Latitude': [1, 2, 3, 4, 5]})
df2 = pd.DataFrame({'initial': ['AA', 'AB', 'AC', 'AD', 'AE'],
'marker': ['bo', 'bv', 'b^', 'b<', 'b>']})
Вот отображение
dct = pd.Series(df2.marker.values, index=df2.initial).to_dict()
df1['marker'] = df1['BSI'].str[0:2].map(dct)
BSI Latitude marker
0 AA-010 1 bo
1 AA-030 2 bo
2 AA-180 3 bo
3 AA-200 4 bo
4 AA-220 5 bo