Как мне создать Pandas Dataframe, где набор столбцов отличается для каждой строки? - PullRequest
0 голосов
/ 21 апреля 2019

Я, по сути, хочу что-то вроде этого:

    A   B   C   D
1   v   v       v
2   v       v   v
3       v   v

где:

  • строка 1 имеет значение для столбцов A, B и D, но не имеет столбца C
  • строка 2 имеет значение для столбцов A, C и D, но не имеет столбца B
  • строка 3 имеет значение для столбцов B и C, но не имеет столбцов A и D.

В качестве небольшой истории я извлекаю строки из DB Dynamo непосредственно в Pandas Dataframe, и, поскольку каждая строка в Dynamo, по сути, представляет собой отдельный отдельный объект JSON, я часто получаю вышеуказанноеситуация.Некоторые из моих вызовов функций pandas терпят неудачу с KeyError, так как столбец даже не существует.Я хочу воссоздать ситуацию, чтобы найти способ справиться с ней более изящно.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2019

При этом создается кадр данных, но в 1-й строке есть столбец «C», во 2-й строке есть столбец «D», а в 3-й строке есть столбцы «A» и «D», несмотря на то, что я их не указал:

df = pd.DataFrame([{'A': 'v', 'B': 'v', 'D': 'v'}, {'A':'v', 'B':'v', 'C':'v'}, {'B':'v', 'C':'v'}])

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

0 голосов
/ 21 апреля 2019

Например, если вы ищете все уникальные перестановки в списке ['v', 'v', 'v', ''], это можно сделать с помощью itertools:

import itertools

data_list = ['v', 'v', 'v', '']
data = set(itertools.permutations(data_list))
df = pd.DataFrame(data=data, columns=list('ABCD'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...