Попытка преобразовать элементы во фрейме данных.Может быть, JSON - PullRequest
0 голосов
/ 03 октября 2018

Я импортирую данные из базы данных, и мне нужно только одно поле.Я могу получить одно поле просто отлично, но данные в этом одном поле выглядят очень грязно, как здесь.

[
    {'id': 360014571631, 'default': False, 'name': '200 - OK', 'raw_name': '200 - OK', 'value': 'purpose_add/remove_user'},
    {'id': 360014571651, 'default': False, 'name': 'Change Permissions', 'raw_name': 'Change Permissions', 'value': 'purpose_change_permissions'}, 
    {'id': 360014571671, 'default': False, 'name': 'Failed Data Validation', 'raw_name': 'Failed Data Validation', 'value': 'purpose_failed_data_validation'},
    {'id': 360014571691, 'default': False, 'name': 'Grant Access', 'raw_name': 'Grant Access', 'value': 'purpose_grant_access'},
]

Я хотел бы очистить его и поместить в другой фрейм данных.Итак, я хочу отбросить одиночный апостроф, а также квадратные и фигурные скобки (довольно просто).Наконец, я хочу разделить все на основе запятых и назначить имя слева от двоеточия в качестве нового имени поля.Итак, я хочу получить это в этом формате.

Это то, что я не могу понять.Я не уверен, является ли это опорой или транспонированием или расплавлением.Я не знаю, как это назвать.Это определенно какое-то преобразование в наборе данных.

id  default name    raw_name    value   etc., etc., etc.
360014571631        FALSE   200 - OK    200 - OK    purpose_add/remove_user   etc., etc., etc.

Когда я экспортирую данные в CSV, я вижу это:

enter image description here

Примечание: некоторые записи выглядят так:

                                       []

Я попробовал это:

df1[df1.custom_field_options.str.contains("[]") == False]

Я получил эту ошибку:

error: unterminated character set

Если я запускаю набор данных Бена, он на самом деле работает так, как я хочуэто к.

1 Ответ

0 голосов
/ 03 октября 2018

Я, возможно, что-то упускаю в преобразовании, которое вы выполняете, но, как описано выше, я думаю, что вы просто хотите создать фрейм данных из своего списка словарей.

используя ваши данные:

data = [{'id': 360014571631, 'default': False, 'name': '200 - OK', 'raw_name': '200 - OK', 'value': 'purpose_add/remove_user'}, {'id': 360014571651, 'default': False, 'name': 'Change Permissions', 'raw_name': 'Change Permissions', 'value': 'purpose_change_permissions'}, {'id': 360014571671, 'default': False, 'name': 'Failed Data Validation', 'raw_name': 'Failed Data Validation', 'value': 'purpose_failed_data_validation'}, {'id': 360014571691, 'default': False, 'name': 'Grant Access', 'raw_name': 'Grant Access', 'value': 'purpose_grant_access'}]

вы можете преобразовать это в фрейм данных с помощью:

df = pd.DataFrame().from_dict(data)

, которая возвращает:

       default            id                    name                raw_name  value
0    False  360014571631                200 - OK                200 - OK   purpose_add/remove_user
1    False  360014571651      Change Permissions      Change Permissions   purpose_change_permissions
2    False  360014571671  Failed Data Validation  Failed Data Validation   purpose_failed_data_validation
3    False  360014571691            Grant Access            Grant Access   purpose_grant_access

, еслиВы хотели получить его в JSON.

df.to_json()

, который вы можете найти здесь: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_json.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...