pandas 实现分组排序并分配行号
时间: 2024-11-05 09:28:04 浏览: 18
Pandas分组与排序的实现
在Pandas中,如果你想对DataFrame进行分组并且按照某个列进行排序,同时给每个排序后的组分配唯一的行号,可以使用`groupby()`和`rank()`、`cumcount()`等函数结合。
例如,假设你有这样一个DataFrame,你想按照'col_to_sort'列排序,然后在每个'group_column'的分组内给行分配行号:
```python
df['row_num'] = df.groupby('group_column')['col_to_sort'].rank(method='dense', ascending=True).astype(int)
```
这里,`groupby('group_column')`首先会对每个group_column的值进行分组,`rank()`函数会为每个分组内的'col_to_sort'列应用升序排名(如果想要降序排列,设置`ascending=False`),`method='dense'`使得排名连续,没有空位(如果想要有间隙,可以使用'first')。
如果你想基于整个DataFrame排序,可以略过`groupby`部分:
```python
df['row_num_global'] = df['col_to_sort'].rank(method='dense', ascending=True).astype(int)
```
以上操作会生成一个新的列`row_num`或`row_num_global`,其中包含了对应的行号。
阅读全文