我有一个像这样的pandas数据框:
Cat | Val
A | 10
B | 20
B | 5
A | 8
我想将列拆分为
[[10, 8],[20,5]]
[A,B]
我知道这非常简单,只是找不到合适的在线资源
答案 0 :(得分:2)
使用groupby
apply
和list
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]]