Преобразовать ряды панд со списком диктонар в кадр данных со столбцами из диктонары - PullRequest
0 голосов
/ 20 октября 2019

У меня есть серия панд со списком диктонар:

series = pd.Series(
    [[{'id': '1', 'val': 'ab'}, {'id': '2', 'val': 'abc'}], [{'id': '1', 'val': 'aa'}, {'id': '2', 'val': 'ewe'}],
     [{'id': '3', 'val': 'aea'}, {'id': '4', 'val': 'te'}]],
    index=['2014-01-01 22:59:00+00:00', '2014-01-02 22:59:00+00:00', '2014-01-03 21:59:00+00:00'])
2014-01-01 22:59:00+00:00    [{'id': '1', 'val': 'ab'}, {'id': '2', 'val': 'abc'}]
2014-01-02 22:59:00+00:00    [{'id': '1', 'val': 'aa'}, {'id': '2', 'val': 'ewe'}]
2014-01-03 22:59:00+00:00    [{'id': '3', 'val': 'aea'}, {'id': '4', 'val': 'te'}]

Я хотел бы преобразовать это в Dataframe с такими столбцами, как:

                           id   val
2014-01-01 22:59:00+00:00   1   ab
2014-01-01 22:59:00+00:00   2   abc
2014-01-02 22:59:00+00:00   1   aa
......

Любая идея окак это реализовать? Спасибо

Я пытался использовать метод pandas pd.dataframe с другими параметрами.

df = pd.DataFrame(series)

Ответы [ 2 ]

1 голос
/ 20 октября 2019

Ваш образец представляет собой серию Pandas, а не DataFrame. Поэтому создайте фрейм данных с двумя столбцами, преобразуйте каждый столбец и присоединитесь к фрейму данных.

df = pd.concat([sample.apply(pd.Series)[column].apply(pd.Series) for column in df.columns])
print(df.head())

Вывод:

                           id   val
2014-01-01 22:59:00+00:00   1   ab
2014-01-02 22:59:00+00:00   1   aa
2014-01-03 21:59:00+00:00   3   aea
2014-01-01 22:59:00+00:00   2   abc
2014-01-02 22:59:00+00:00   2   ewe
2014-01-03 21:59:00+00:00   4   te
0 голосов
/ 20 октября 2019

Вы можете использовать метод explode() (новый в Pandas 0.25.0), чтобы развернуть вашу таблицу по вертикали, и метод apply(pd.Series), чтобы развернуть вашу таблицу по горизонтали:

series.explode().apply(pd.Series)

Вывод:

                          id  val
2014-01-01 22:59:00+00:00  1   ab
2014-01-01 22:59:00+00:00  2  abc
2014-01-02 22:59:00+00:00  1   aa
2014-01-02 22:59:00+00:00  2  ewe
2014-01-03 21:59:00+00:00  3  aea
2014-01-03 21:59:00+00:00  4   te
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...