pandas groupby两个变量,转换为list-of-list,和multiindexed df?

时间:2018-05-10 11:28:09

标签: list pandas nested pandas-groupby multi-index

我有一个pandas数据框,如下所示:

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]]

  • 查询应该在pandas中,理想情况下没有for循环。

2)添加问题: 如何从groupby查询中获取多索引数据框:

例如 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 :(得分:2)

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