• 我用pandas解决了美女同事的难题,美女直呼很Nice


    大家好,我是派森酱。

    前天一个女同事找我帮忙,说有上百个表格需要合并到一起,我一看,都是相同表头的表格,这不是so easy吗,快速搞定,妹子拿到结果很高兴。

    之前咱们讲过pandas的两表连接merge:可以按条件匹配数据,自动合并列名相同的列;

    轴向连接concat:可以左右连接,也可以上下连接,相同的内容自动合并;

    这次我用的是pandas的另一个多表连接append

    功能说明

    pandasappend要求表的表头要一致才行,但是不会限制表的个数。

    准备数据

    1. import pandas as pd
    2. df1 = pd.DataFrame({
    3.     'a': [123],
    4.     'b': [098],
    5.     'c': [741]
    6. })
    7. df2 = pd.DataFrame({
    8.     'a': [412],
    9.     'b': [509],
    10.     'c': [674]
    11. })
    12. df3 = pd.DataFrame({
    13.     'a': [012],
    14.     'b': [209],
    15.     'c': [374]
    16. })

    用法

    可以用df.append(df1)来连接相同表头的两表

    比如:

    df = df1.append(df2)

    输出:

    1. a b c
    2. 0 1 0 7
    3. 1 2 9 4
    4. 2 3 8 1
    5. 0 4 5 6
    6. 1 1 0 7
    7. 2 2 9 4

    df.append(df1)只是个用法,一定要用一个变量去赋值才行哟,要不然会没有变化。

    那么怎么多表连接呢,很简单,就是在后面不停的加append

    df = df1.append(df2).append(df3)

    输出:

    1. a b c
    2. 0 1 0 7
    3. 1 2 9 4
    4. 2 3 8 1
    5. 0 4 5 6
    6. 1 1 0 7
    7. 2 2 9 4
    8. 0 0 2 3
    9. 1 1 0 7
    10. 2 2 9 4

    看,是不是简单。其实pandas的很多功能都很简单好用,只要知道了用法,都很强大的。

    索引重置

    上面的多表虽然连接好了,但是索引确是各自表的索引,很多都是重复的,如果有需要用索引操作内容的话,会把相同索引的内容都改掉,那么我们就需要重置索引:

    可以用ignore_index=True来重置索引

    df = df1.append(df2).append(df3, ignore_index=True)

    输出:

    1. a b c
    2. 0 1 0 7
    3. 1 2 9 4
    4. 2 3 8 1
    5. 3 4 5 6
    6. 4 1 0 7
    7. 5 2 9 4
    8. 6 0 2 3
    9. 7 1 0 7
    10. 8 2 9 4

    索引都被重置了

    数据填补

    同样的有时候各表的内容会有空值的怎么办呢?

    可以用combin_first来填补空值

    用使用场景

    有两张表leftright,一般要求它们的表格结构一致,数据量也一致,使用right的数据去填补left的数据缺漏。如果在同一位置leftright数据不一致,保留left的数据

    设置空值数据
    1. df1 = pd.DataFrame({
    2.     'a': [123],
    3.     'b': [nan, 98],
    4.     'c': [nan, 41]
    5. })
    6. df2 = pd.DataFrame({
    7.     'a': [4, nan, 2],
    8.     'b': [509],
    9.     'c': [6, nan, 4]
    10. })
    填补数据
    df = df1.combine_first(df2)

    输出:

    1. a b c
    2. 0 1.0 5.0 6.0
    3. 1 2.0 9.0 4.0
    4. 2 3.0 8.0 1.0

    空值都被填补了,df1少的被df2的值填补,相同位置不同的值保留df1的值

    总结

    根据pandas的各种表的连接功能,我们能快速的将多个表合并到一起,来快速处理我们的数据。

    今天就讲到这了,酱友们有其它想学习的功能和建议,可以留言给我,我们一起学习一起进步。

  • 相关阅读:
    什么是PYTHONPATH,导包导模块究竟要怎么用才合理
    K8S篇之etcd数据备份与恢复
    基于 .NET 6 的轻量级 Webapi 框架 FastEndpoints
    微服务设计:Spring Cloud API 网关概述
    深入理解AQS--jdk层面管程实现【管程详解的补充】
    第六章 队列的讲解与实现
    [附源码]计算机毕业设计JAVAjsp社区养老服务管理系统
    Java面向对象(上)
    基于SSH开发新闻管理系统
    Flask框架中Jinja2模板过滤器
  • 原文地址:https://blog.csdn.net/weixin_48923393/article/details/126811758