根据数据帧拆分获取一系列数据

时间:2018-05-17 01:22:16

标签: python pandas

我有一个像这样的pandas数据框:

Cat | Val
 A  | 10
 B  | 20
 B  | 5
 A  | 8

我想将列拆分为

[[10, 8],[20,5]]
[A,B]

我知道这非常简单,只是找不到合适的在线资源

2 个答案:

答案 0 :(得分:2)

使用groupby applylist

s=df.groupby('Cat').Val.apply(list)
s.index.tolist()
Out[273]: ['A', 'B']
s.values.tolist()
Out[274]: [[10, 8], [20, 5]]

s.reset_index()
Out[276]: 
  Cat      Val
0   A  [10, 8]
1   B  [20, 5]

答案 1 :(得分:0)

考虑以下代码。感兴趣的列上的第一个groupby

gb = df.groupby(by=['Cat'])

现在,您可以针对Cat执行以下操作(docs是干的,但正如您所看到的那样,它是一个字典,密钥是组名。)

list(gb.groups.keys())

输出

['A', 'B']

对于Val,我们可以从每个组中获取子网,并将我们感兴趣的列作为列表。

[list(gb.get_group(x)['Val']) for x in gb.groups]

给出

[[10, 8], [20, 5]]