Pandas按多列排序同时实现Username列不区分大小写排序的问题
解决方案
直接在sort_values的key参数中加入列名判断,仅对Username列做小写转换即可,其余列保持原有排序逻辑:
df = df.sort_values( ["Username", "Date", "Value"], key=lambda col: col.str.lower() if col.name == "Username" else col )
如果你的pandas版本低于1.1.0(不支持key参数),可以用临时列的兼容方案:
# 新增临时小写用户名列辅助排序,排序完成后删除 df["_tmp_username_lower"] = df["Username"].str.lower() df = df.sort_values(["_tmp_username_lower", "Date", "Value"]).drop("_tmp_username_lower", axis=1)
两种方案都可以实现需求:先按用户名小写不区分大小写排序,用户名相同的再按日期、数值顺序排序。
内容的提问来源于stack exchange,提问作者Sam Price
相关产品推荐
相关产品推荐

