Merge

作者: Noza_ea8f | 来源:发表于2020-12-19 16:40 被阅读0次

这个Merge函数功能比较强大;
如果我有两个表;
这两个表之间存在关联;
通过关联的键生成一个新的表;
比如有这样两个表:
一个表包含教师ID,每个教师ID都对应多门课程;
另一个表包含课程与班级的对应关系,就是每门课程与哪些班级对应(因为一门课程可以有多个班来上);
那么我要知道每个教师都需要给哪些班级上课,就可以用Merge这个函数了;
观察两个表,它们之间的键是课程,通过课程就可以找到教师与班级的对应关系了;

教师表:


图片.png

教师授课表:


图片.png
代码:
import pandas as pd

path = 'data/Merge函数.xlsx'
# 读取教师表
df_teachers = pd.read_excel(path, sheet_name='教师表')
# 读取教师授课表
df_courses = pd.read_excel(path, sheet_name='教师授课表')

# 通过两个表里的USER_ID来为每门课程添加教师姓名
df_teachers_and_courses = pd.merge(df_teachers, df_courses, left_on='USER_ID', right_on='USER_ID', how='inner')

print(df_teachers_and_courses)

输出:

    USER_ID  姓名    科目
0         1  张三   科目1
1         1  张三   科目2
2         2  李四   科目3
3         2  李四   科目4
4         2  李四   科目5
5         3  王五   科目6
6         4  刘六   科目7
7         4  刘六   科目8
8         4  刘六   科目9
9         5  贾七  科目10
10        5  贾七  科目11

参数"inner"是内连接,就是说如果存在就匹配过来,不存在就舍弃;
让我对数据做个修改,再看一下就清楚了;


图片.png

新增一个叫“周八”的教师;


图片.png
这边科目对应的USER_ID在“教师表”中是没有的,让我再运行一下刚才的程序:
    USER_ID  姓名    科目
0         1  张三   科目1
1         1  张三   科目2
2         2  李四   科目3
3         2  李四   科目4
4         2  李四   科目5
5         3  王五   科目6
6         4  刘六   科目7
7         4  刘六   科目8
8         4  刘六   科目9
9         5  贾七  科目10
10        5  贾七  科目11

可以看到结果还是一样的;
如果我把参数"inner"改为“outer",再次运行程序:

    USER_ID   姓名    科目
0         1   张三   科目1
1         1   张三   科目2
2         2   李四   科目3
3         2   李四   科目4
4         2   李四   科目5
5         3   王五   科目6
6         4   刘六   科目7
7         4   刘六   科目8
8         4   刘六   科目9
9         5   贾七  科目10
10        5   贾七  科目11
11        6   周八   NaN
12        7  NaN  科目12
13        7  NaN  科目13

这样,所有数据都被提取出来了;
没有匹配到的用”NaN“表示;
这个功能是非常强大也经常使用的;
类似于Excel里面的VLOOKUP函数,但是要强大得多,我们可以对N张表格进行遍历匹配,无论是效率还是方便程度,在大数据量和多张表格时都是都是VLOOKUP函数无法发相比的;

相关文章

  • Git常见场景解决方法总结

    放弃某次merge 假如你merge的时候产生了很大的冲突,想先放弃某次merge,你可以: git merge ...

  • Git:真实 merge

    前言 Git:真实 merge 是一种 merge 的方式,除去真实 merge,肯定还有不真实的 merge,就...

  • R的merge用法(2018-06-05)

    R语言-merge函数 merge函数的声明: merge( x, y, by = intersect(names...

  • git merge and rebase

    一、merge合并分支每次merge的时候都会生成一个commit 标志是merge的信息 Merge remot...

  • git merge一个指定文件

    git里面的merge是全merge ,没有单个文件merge。 要实现一个文件的merge ,可以使用git c...

  • pandas表连接

    Pandas Dataframe有三种连接方法,分别是merge,join,concat。 merge merge...

  • Git系列4:git merge合并操作

    Fast forward merge 步骤: 解决Merge冲突

  • git merge

    冲突状态放弃 merge git merge --abort 冲突的文件使用其它分支 git merge -Xth...

  • leetcode每日一题

    Merge Sorted Array Question leetcode: Merge Sorted Array ...

  • Merge Sort

    Merge Sort Based on the idea of divide and conquer, merge...

网友评论

      本文标题:Merge

      本文链接:https://www.haomeiwen.com/subject/bnxpgktx.html