【发布时间】:2019-12-04 18:15:07
【问题描述】:
我的数据框:
data = {'Input':[133217,133217,133217,133217,133217,133217,132426,132426,132426,132426,132426,132426,132426,132426],
'Font':[30,25,25,21,20,19,50,50,50,38,38,30,30,29]}
Input Font
0 133217 30
1 133217 25
2 133217 25
3 133217 21
4 133217 20
5 133217 19
6 132426 50
7 132426 50
8 132426 50
9 132426 38
10 132426 38
11 132426 30
12 132426 30
13 132426 29
我想创建一个仅包含 字体 中属于 3 个唯一最大值的值的新数据框。例如,输入 133217 的 3 个最大字体值为 30、25、21。
预期输出:
op_data = {'Input':[133217,133217,133217,133217,132426,132426,132426,132426,132426,132426,132426],
'Font':[30,25,25,21,50,50,50,38,38,30,30]}
Input Font
0 133217 30
1 133217 25
2 133217 25
3 133217 21
4 132426 50
5 132426 50
6 132426 50
7 132426 38
8 132426 38
9 132426 30
10 132426 30
我用 pandas 的 groupby 试过这个:
df = pd.DataFrame(data)
df['order'] = df.groupby('Input').cumcount()+1
然后我考虑了 df['order'] 中的 1,2,3 值,但没有按计划进行。有什么替代方法吗?
【问题讨论】:
-
您说您需要 3 个最高值,但您的预期输出第一组有 4 个值,第二组有 7 个值。
-
猜猜,这是因为 25 出现了两次。因此,反过来提出问题:您是否需要像
133217和25这样的重复值?
标签: python pandas-groupby