在网上找不到最新的答案。我的问题本质上与this question相同,也就是说,我想在group
内按revenue
排序,而不改变数据集中group
的顺序
该线程的答案是错误的,它之所以有效,是因为示例中只有两个组恰好按反字母顺序排列
当我尝试df.groupby('group').sort_values('revenue')
时,我得到错误'DataFrameGroupBy' object has no attribute 'sort_values'
我该怎么做
示例数据帧:
name group revenue
0 Name1 GroupB 1
3 Name4 GroupA 4
4 Name5 GroupA 5
8 Name7 GroupC 9
1 Name2 GroupB 2
2 Name3 GroupB 3
5 Name6 GroupA 6
6 Name7 GroupC 7
7 Name7 GroupC 8
预期产出:
name group revenue
2 Name3 GroupB 3
1 Name2 GroupB 2
0 Name1 GroupB 1
5 Name6 GroupA 6
4 Name5 GroupA 5
3 Name4 GroupA 4
8 Name7 GroupC 9
7 Name7 GroupC 8
6 Name7 GroupC 7
为什么要使用groupby呢?您可以将多个sort_值调用链接在一起,以获得正确的排序顺序。e、 g.使用类似的数据链接问题,您希望按收入降序排序,但保持组升序,您可以这样做:
这将返回:
您可以创建一个新的临时列,将
B
、A
和C
转换为1
、2
和3
,以便维护无序的顺序。然后,只需删除临时列。在回答#1中,这是更动态的,如果group
列的值没有连续分组,那么这将起作用。对于答案2,它们必须是连续的(答案1和答案2的输入顺序不同)更新的答案#1(每个注释-组在行中不是连续的,但我们仍然希望按照每个组中第一个值的出现顺序对它们进行正确排序。)代码
[l for l in enumerate((df['group'].unique()))]
将根据数据帧中group
列的第一个值的顺序为每个组分配一个数字我想在合并和排序之前突出显示
enumerate
行代码的dft
输出答复#2
对于这两个答案,只需删除列:
相关问题 更多 >
编程相关推荐