热线电话:13121318867

登录
2019-02-25 阅读量: 713
使用groupby时计算Pandas中的模式

我有一张表如下:

Col1 | Col2 | Col3

AAA | 1 | a

AAA | 1 | a

AAA | 1 | b

AAA | 2 | b

AAA | 2 | b

AAA | 2 | b

AAA | 3 | a

BBB | 1 | b

BBB | 1 | b

我想在以下两个步骤中减少表:

找到Col3中与(Col1,Col2)值对应的最常出现的值。

从步骤1的结果中,仅保留与Col1值对应的最频繁出现的值。

施加步骤1上面的表:该模式(或最频繁出现的值)对应于(AAA, 1)是a,等等。我们得到:

Col1 | Col2 | newCol1

AAA | 1 | a

AAA | 2 | b

AAA | 3 | a

BBB | 1 | b

将step2应用于此表,我们看到这a是对应的模式,AAA并且b是最常出现的值 - 对应于BBB- 所以我们得到:

Col1 | newCol2

AAA | a

BBB | b

解决办法:

df.groupby(['Col1','Col2']).Col3.apply(pd.Series.mode).\

groupby(level=0).apply(pd.Series.mode)

Out[136]:

Col1

AAA 0 a

BBB 0 b

Name: Col3, dtype: object

0.0000
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子