Здесь самый простой способ состоит в том, чтобы извлечь словари в простой список словарей и построить из них вспомогательный фрейм данных и объединить его горизонтально с исходным:
aux = pd.DataFrame(test['office_location'].tolist()).stack().reset_index(level=1)
На этом этапе мы имеем:
level_1 0
0 office_x lat,long
0 office_y lat,long
Время для объединения:
resul = pd.concat([test, aux.rename(columns={'level_1': 'OfficeName',
'0': 'LatLong'})], axis=1)
для получения:
name office_location total_employees OfficeName 0
0 CompanyABCD {'office_x': 'lat,long', 'office_y': 'lat,long'} 100 office_x lat,long
0 CompanyABCD {'office_x': 'lat,long', 'office_y': 'lat,long'} 100 office_y lat,long
Но я думаю, что вам следует предварительно обработать данные, когда вы извлекаете их из базы данных и перед тем, как заполнить ее данным.