如何在python中找到唯一类别的优先级值?

时间:2015-05-14 11:28:47

标签: python pandas

我有很多重复的类别,每个类别由不同的权重组成,我想根据优先级为每个唯一类别分配1个权重。

mydata

  category  original_wt  predicted_wt   categorized   categorized_value
1 xxxxx      2.5          3.0            original      2.5
2 yyyyy      3.5          4.0            predicted     4.0
3 zzzzz      3.0          5.0            predicted     5.0
4 aaaaa      4.0          2.5            original      4.0
5 bbbbb      3.2          5.5            original      3.2
6 ccccc      4.6          3.5            predicted     3.5
7 xxxxx      2.5          4.0            original      2.5
8 xxxxx      4.0          5.5            predicted     5.5
9 yyyyy      2.5          4.0            predicted     4.0
10yyyyy      3.0          2.0            predicted     2.0
11aaaaa      5.0          4.5            original      5.0

对于eg1:对于类别' xxxxx'我们有三个分类值(2.5,2.5,5.5) 因此,我们必须优先考虑2.5因为它重复了 eg2:对于某个类别' yyyyy'我们有三个分类值(4.0,4.0,2.0) 因此,我们必须优先考虑2.0,因为它是最重复的

但如果我们在类别中只有一个项目,它应该保持不变。 如果我们有两个具有两个不同权重的项目,我们应该保持高分类值

Expected output:
mydata

 category  original_wt  predicted_wt   categorized   categorized_value
1 xxxxx      2.5          3.0            original      2.5
2 yyyyy      3.5          4.0            predicted     4.0
3 zzzzz      3.0          5.0            predicted     5.0
4 aaaaa      4.0          2.5            original      4.0
5 bbbbb      3.2          5.5            original      3.2
6 ccccc      4.6          3.5            predicted     3.5
7 aaaaa      5.0          4.5            original      5.0


Tried:
category_grouping_by_catg_value = mydata.groupby(['category','categorized_value']).apply(pd.DataFrame.mode).reset_index(drop=True).

通过以上操作,我得到一些随机值 我怎么能在python中做到这一点。

1 个答案:

答案 0 :(得分:0)

您可能会考虑这样做:

df['mode'] = df.groupby('category')['categorized_value'].transform(pd.Series.mode)
df['mode'] = df.groupby('category')['mode'].transform(max)
print df.drop_duplicates(['category', 'mode']).set_index('category').sort_index()[['categorized_value', 'mode']]

更新了代码,以便在执行categorized_value后剩下几个时选择.mode的最大值。

          categorized_value  mode
category                         
aaaaa                   4.0   5.0
bbbbb                   3.2   3.2
ccccc                   3.5   3.5
xxxxx                   2.5   2.5
yyyyy                   4.0   4.0
zzzzz                   5.0   5.0