I have a DataFrame:
dat = pd.DataFrame({
'key1' : [ 1, 1, 2, 2, 3, 3, 3, 3, 4, 4],
'key2' : ['a', 'b', 'a', 'c', 'b', 'c', 'd', 'e', 'c', 'e'],
'value' : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
})
我可以使用`list`函数来聚合这些列:参考链接。
dat.groupby('key1')['key2'].apply(list)
## key1
## 1 [a, b]
## 2 [a, c]
## 3 [b, c, d, e]
## 4 [c, e]
## Name: key2, dtype: object
如果我想要按
key1
进行分组并获得聚合,每行都是一个dict
的{ key2 : value }
对,该怎么办? 我期望的输出结果是:## key1
## 1 {a : 1, b : 2}
## 2 {a : 3, c : 4}
## 3 {b : 5, c : 6, d : 7, e : 8}
## 4 {c : 9, e : 10}
在pandas中如何实现这个目标?
一种解决方案是使用上面的函数创建两个列表,然后将它们合并为
dict
,但也许有更好的解决方案?
df.groupby('key1')['key2', 'value'].apply(lambda x: dict(x.values))
- cs95