У меня есть функция, которая успешно работает для извлечения данных из кадра данных, когда он выглядит следующим образом:
company created_at notes
{'id': 'eb904b4b', 'name': 'B'} 2018-06-04T13:57:02Z Digging Holes
{'id': 'da2dc806', 'name': 'K'} 2018-06-04T13:57:02Z Drinking Tea
{'id': 'eb904b4b', 'name': 'B'} 2018-05-11T08:52:23Z Cbales
{'id': '3d38dcb7', 'name': 'B'} 2018-05-11T08:52:23Z Digg
Чтобы получить это:
company_id company_name created_at notes
eb904b4b B 2018-06-04T13:57:02Z Digging Holes
da2dc806 K 2018-06-04T13:57:02Z Drinking Tea
eb904b4b B 2018-05-11T08:52:23Z Cbales
3d38dcb7 B 2018-05-11T08:52:23Z Digg
Однако, если столбец компанииимеет пустое значение, то функция завершается ошибкой, поскольку она ожидает значение.Я не могу понять, как заставить мой код пропускать пропуски и продолжать ...
Например:
company created_at notes
{'id': 'eb904b4b', 'name': 'B'} 2018-06-04T13:57:02Z Digging Holes
2018-06-04T13:57:02Z Drinking Tea
{'id': 'eb904b4b', 'name': 'B'} 2018-05-11T08:52:23Z Cbales
{'id': '3d38dcb7', 'name': 'B'} 2018-05-11T08:52:23Z Digg
Код, который работает для полного кадра, выглядит так:
def shallow_extract(column, df_parent):
temp_frame = pandas.DataFrame(x for x in df_parent[column])
temp_frame.columns = [f"{column}_{str(col)}" for col in temp_frame.columns]
return pandas.concat([df_parent.drop([column], axis=1), temp_frame.apply(pandas.Series)], axis=1)
РЕДАКТИРОВАТЬ: удаление строк не вариант, так как другие поля могут содержать необходимые данные.Код также должен иметь возможность принимать несколько фреймов данных с разными позициями и именами столбцов для извлечения (как указано вторым параметром в функции)