有a和b两列数据,先要用a分组,再按b进行倒序后给分组编号
时间: 2024-05-14 18:12:24 浏览: 71
以下是Python代码实现:
```
import pandas as pd
# 生成示例数据
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3, 3, 3],
'b': [10, 20, 30, 40, 50, 60, 70]
})
# 按a分组,按b倒序排序,生成新的编号列
df['group_id'] = df.groupby('a')['b'].apply(lambda x: x.sort_values(ascending=False).rank(method='dense', ascending=False))
print(df)
```
运行结果:
```
a b group_id
0 1 10 2.0
1 1 20 1.0
2 2 30 2.0
3 2 40 1.0
4 3 50 3.0
5 3 60 2.0
6 3 70 1.0
```
解释一下代码:
1. 首先用`pd.DataFrame`生成示例数据,包含两列`a`和`b`。
2. 使用`groupby`按`a`进行分组。
3. 对于每个分组,使用`apply`将对应的`b`列按倒序排序。`rank`函数则生成新的编号列,其中`method='dense'`表示出现相同数字时使用连续的编号,例如`[2, 2, 3]`会生成`[2, 2, 1]`,`ascending=False`表示按倒序排列。
4. 最后将编号列赋值给原DataFrame的新列`group_id`。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)