wzeemy? 2022-05-12 03:43 采纳率: 87.5%
浏览 34
已结题

【半夜睡不着还在想】pandas该如何做到 按大小顺序依次替换某一列的值

我有一个dataframe,在日期列中,有不同的日期值,我该怎么给这些日期值按大小顺序替换成从1,2,3依次递增的值?

比如日期列中的值有
2022-05-05
2022-06-06
2022-05-04
2022-05-04
2022-05-02
预期替换成
3
4
2
2
1
(不能自己直接用map关系替换,因为我面对的日期有上万行非连续的工作日,不可能手动编写那么多的map关系(哭))
(我躺在床上想到一个思路,不知道可不可行,把日期列的unique()全部取出来,sort_values排序,然后新建special_tag列依次填入1、2、3... 将这个新df与原df进行merge 再把原日期列删除 将special_tag列重命名为日期列)是否还有更好的办法显得我不那么菜

  • 写回答

1条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2022-05-12 07:01
    关注

    把那一列的日期去重后排序,然后索引号+1替换到原数据中

    >>> pf = pd.DataFrame({'date':['2022-05-05',
        '2022-06-06',
        '2022-05-04',
        '2022-05-04',
        '2022-05-02']})
    >>> idx = sorted(list(set(pf['date'].tolist())))
    >>> pf['date'] = pf['date'].apply(lambda x:idx.index(x)+1)
    >>> pf
       date
    0     3
    1     4
    2     2
    3     2
    4     1
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 修改了问题 5月12日
  • 修改了问题 5月12日
  • 展开全部

悬赏问题

  • ¥15 Unity 2022.3.34版本安卓打包apk失败,gradle配置问题,用的是mono2x
  • ¥15 R语言中安装bibliometrix 后运行biblioshiny出现问题
  • ¥20 关于#android#的问题:用开发助手发现找不到控件(autojs)
  • ¥15 dir815漏洞反弹shell失败
  • ¥15 支付宝小程序云函数登录获取user_id失败
  • ¥50 python for 循环速度慢
  • ¥15 CubeMX生成的代码用keil编译有报错
  • ¥15 Stata链式中介效应代码修改
  • ¥15 pip安装PyAV报错
  • ¥15 latex投稿显示click download