Панды группируют по двум переменным, преобразуют в список-список и мультииндексируют df? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть датафрейм для панд, который выглядит следующим образом:

df = pd.DataFrame({
  'ID'   : ['A','B','C','A','B','C','A','B','C'],
  'date' : [1,1,1,2,2,2,3,3,3], 
  'value': [1,2,3,4,5,6,7,8,9]}
)

1) Как мне создать список-список из value (предположительно, с помощью запроса groupby), чтобы получить внешнюю группу, сгруппированную по ID, и внутреннюю группу по date:

  • Ожидаемый результат будет выглядеть следующим образом: [[1,4,7],[2,5,8],[3,6,9]]

  • Запрос должен быть в пандах и в идеале без циклов for.

2) Добавить на вопрос: Как я могу получить мультииндексированный фрейм данных из группового запроса:

Например g = df.groupby('id') желаемый вывод:

id  date  value
A   1     1
    2     4
    3     7
B   1     2
    2     5
    3     8
C   1     3
    2     5
    3     9

1 Ответ

0 голосов
/ 10 мая 2018
In [73]: df.groupby(['ID'])['value'].apply(list).tolist()
Out[73]: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

ответ на дополнительный вопрос:

In [110]: df.sort_values(['ID','date']).set_index(['ID','date'])
Out[110]:
         value
ID date
A  1         1
   2         4
   3         7
B  1         2
   2         5
   3         8
C  1         3
   2         6
   3         9
...