Pandas按指定列分组时如何为组内数值生成排序序号列
你可以使用pandas的分组排名功能快速实现需求,具体代码如下:
import pandas as pd # 示例数据 d = {'hour': [1, 1,2,2], 'value': [10, 50,200,100]} df = pd.DataFrame(data=d) # 新增order列:按hour分组后组内按value升序排名 df['order'] = df.groupby('hour')['value'].rank(method='min', ascending=True).astype(int)
执行后输出的df就和你预期的结果完全一致。
参数说明:
method='min':遇到相同value时取最小排名,适配有并列值的场景ascending=True:按value从小到大排序,值越小排名序号越小astype(int):将rank方法默认返回的浮点型结果转为整数,符合常规序号的使用习惯
内容的提问来源于stack exchange,提问作者Ryszard Eggink
相关产品推荐
相关产品推荐

