有的时候,两张表格有共同的字段,我们希望用共同的字段将这两张表格连接起来,从而生成第三张表格。在数据库或excel中,有相应的方法实现。在pandas中,用merge函数可以实现此类功能。
首先,生成两个表格df1和df2。df1为学号和姓名对应的表格,共有6条。df2为学号和体重对应的表格,但df1和df2中的学号不完全一致。
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
"学号":[6001,6002,6003,6004,6005,1006],
"姓名":['熊大','熊二','光头强','吉吉','毛毛','李老板']},
columns =['学号','姓名'])
df1
df1的结果为:
学号 |
姓名 |
|
0 |
6001 |
熊大 |
1 |
6002 |
熊二 |
2 |
6003 |
光头强 |
3 |
6004 |
吉吉 |
4 |
6005 |
毛毛 |
5 |
1006 |
李老板 |
df2 = pd.DataFrame({
"学号":[6001,6002,6003,6004,6005,6666],
"体重":['300','280','150','120','80',66]},
columns =['学号','体重'])
df2
df2的结果为:
学号 |
体重 |
|
0 |
6001 |
300 |
1 |
6002 |
280 |
2 |
6003 |
150 |
3 |
6004 |
120 |
4 |
6005 |
80 |
5 |
6666 |
66 |
merge 函数的基本语法如下。
merged_df = 左边的表格名称.merge(右边的表格名称, on=”两个表格的共同列”,how=(inner、left、right或outer,可以不填,不填就默认为inner))
现将how的4种情况解释并举例:
1、inner。取两个表格的交集。举例:
merged_df = df1.merge(df2, on="学号",how='inner')
merged_df
返回:
学号 |
姓名 |
体重 |
|
0 |
6001 |
熊大 |
300 |
1 |
6002 |
熊二 |
280 |
2 |
6003 |
光头强 |
150 |
3 |
6004 |
吉吉 |
120 |
4 |
6005 |
毛毛 |
80 |
以上表格中的5个学号在df1和df2中都有,所以取的是交集。
2、left。左表格全取,右表格中没有对应的值就填充空值。举例:
merged_df = df1.merge(df2, on="学号", how="left")
merged_df
返回:
学号 |
姓名 |
体重 |
|
0 |
6001 |
熊大 |
300 |
1 |
6002 |
熊二 |
280 |
2 |
6003 |
光头强 |
150 |
3 |
6004 |
吉吉 |
120 |
4 |
6005 |
毛毛 |
80 |
5 |
1006 |
李老板 |
NaN |
3、right。右表格全取,左表格中没有对应的值就填充空值。举例:
merged_df = df1.merge(df2, on="学号", how="right")
merged_df
返回:
学号 |
姓名 |
体重 |
|
0 |
6001 |
熊大 |
300 |
1 |
6002 |
熊二 |
280 |
2 |
6003 |
光头强 |
150 |
3 |
6004 |
吉吉 |
120 |
4 |
6005 |
毛毛 |
80 |
5 |
6666 |
NaN |
66 |
4、outer。取两个表格的合集,缺少的数据就填充空值。举例:
merged_df = df1.merge(df2, on="学号", how="outer")
merged_df
返回:
学号 |
姓名 |
体重 |
|
0 |
6001 |
熊大 |
300 |
1 |
6002 |
熊二 |
280 |
2 |
6003 |
光头强 |
150 |
3 |
6004 |
吉吉 |
120 |
4 |
6005 |
毛毛 |
80 |
5 |
1006 |
李老板 |
NaN |
6 |
6666 |
NaN |
66 |
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/75057
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!