首页 > 解决方案 > pandas groupby 两个变量,转换为列表列表和多索引 df?

问题描述

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

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

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

标签: listpandasnestedpandas-groupbymulti-index

解决方案


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

推荐阅读