ITPub博客

首页 > 数据库 > 数据库开发技术 > 盘点一个Pandas实战案例

盘点一个Pandas实战案例

原创 数据库开发技术 作者:Python进阶者 时间:2024-03-05 09:00:00 0 删除 编辑
点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

今

日

鸡

汤

劝君更尽一杯酒,西出阳关无故人。

大家好,我是Python进阶者。

一、前言

前几天在Python最强王者交流群【钟爱一生】问了一个Pandas库实战的问题。问题如下:

各位大佬,这个得到的结果怎么没按包含数量和金额的列名排序后移动到[发料仓库,1级物料类别,2级物料类别,3级物料类别,4级物料类别,5级物料类别,物料长代码,物料名称,规格型号 单位(基本),单价,仓库分类]之后顺序。

代码如下:

# 创建列名顺序列表
column_order = [
    "发料仓库", "1级物料类别", "2级物料类别", "3级物料类别", "4级物料类别", "5级物料类别",
    "物料长代码", "物料名称", "规格型号", "单位(基本)", "单价", "仓库分类"
]

# 提取包含数量和金额的列名
amount_and_amount_columns = [
    col for col in stock_capital.columns
    if "数量" in col or "金额" in col
]

# 重新排序数据框列的顺序
new_columns = column_order + amount_and_amount_columns
stock_capital = stock_capital.reindex(columns=new_columns)

二、实现过程

这里【瑜亮老师】给了一个思路:你是要包含数量和金额的列排在column_order后面,先不说列名的问题,就先说这个排序,你自己要先确定一下:"2024年1月份结存数量" ,"9月份结存金额", "2022年12月份结存数量" ,"对比10月份数量差异", "对比2022年12月份金额差异"这怎么排序。

后来修改后,就能顺利地得到预期的结果了。

 column_order = ['发料仓库', '1级物料类别', '2级物料类别', '3级物料类别', '4级物料类别', '5级物料类别', '物料长代码', '物料名称', '规格型号', '单位(基本)', '单价', '仓库分类']
    # 提取包含数量和金额的列
    amount_and_amount_columns = [col for col in stock_capital.columns if "数量" in col or "金额" in col]

    # 定义自定义排序函数
    def custom_sort(col):
        # 定位数字(年份和月份)
        numbers = re.findall(r'\d+', col)
        year = int(numbers[0]) if numbers else 0
        month = int(numbers[1]) if len(numbers) > 1 else 0
        # 数量或金额在排序中的权重,数量 > 金额
        type_weight = -1 if "数量" in col else 0
        # 对比差异的权重,对比 < 无对比
        diff_weight = -1 if "对比" in col else 0
        # 返回排序键
        return (year, month, diff_weight, type_weight)

    # 按照自定义排序函数对列名进行排序
    amount_and_amount_columns_sorted = sorted(amount_and_amount_columns, key=custom_sort)

    # 将已排序的列名添加到column_order列表中
    column_order.extend(amount_and_amount_columns_sorted)
    stock_capital = stock_capital.reindex(columns=column_order)

如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答!

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Pandas数据处理实战的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【钟爱一生】提出的问题,感谢【瑜亮老师】给出的思路,感谢【莫生气】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(Python进阶者微信:2584914241),应粉丝要求,我创建了一些ChatGPT机器人交流群和高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群】

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

原文作者:Python爬虫与数据挖掘;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2024-12-18

  • 博文量
    913
  • 访问量
    379507