简单学Pythonpanads库9dataframe之merge函数

有的时候,两张表格有共同的字段,我们希望用共同的字段将这两张表格连接起来,从而生成第三张表格。在数据库或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
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 11 日 下午2:51
下一篇 2024 年 7 月 11 日 下午2:52

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注