按列A

时间:2017-02-22 16:22:20

标签: python pandas dataframe grouping

鉴于DataFrame df,我可以使用

按A列获取组的大小
df.groupby(['columnA']).size()

和每个组中的列B的mimimun值

df.groupby(['columnA']).agg({'columnB':min})

或(我猜的是语法糖)

df.groupby(['columnA'])['columnB'].min()

但是如何直接获得具有这两列的DataFrame?

在SQL中,如果你对它感到满意,那就像

一样简单
SELECT count(columnA), min(columnB) FROM table GROUP BY columnA

提前感谢任何线索。

1 个答案:

答案 0 :(得分:1)

将它们放在agg中应该有效,因为>>> df columnA columnB columnC 0 cat1 3 400 1 cat1 2 20 2 cat1 5 3029 3 cat2 1 492 4 cat2 4 30 5 cat3 2 203 6 cat3 6 402 7 cat3 4 391 >>> df.groupby(['columnA']).columnB.agg(['size', 'min']) size min columnA cat1 3 2 cat2 2 1 cat3 3 2 >>> df.groupby(['columnA']).agg(['size', 'min']) columnB columnC size min size min columnA cat1 3 2 3 20 cat2 2 1 2 30 cat3 3 2 3 203 允许一系列功能。

agg

df.groupby(['columnA']).agg({'columnA':'size','columnB':'min‌​'}) 也接受列的词典 - >函数,所以你想要将一个函数单独映射到每一列你可以用某些东西(这里不需要)来完成这样的事情,如

amixer -c 0 sset Line,0 100%, 100% unmute cap