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)


暂无数据
推荐帖子
0条评论
0条评论
1条评论