Python Pandas 数据合并/融合 merge 数据过滤 isin

数据准备:

import pandas as pd
# 假设有 5 个人,分别参加了 4 门课程,获得了对应的分数
# 同时这个 5 个人分别负责的项目个数 在 'Project_num' 列中显示
data_1 = {'name' : pd.Series(['Alice', 'Bob', 'Cathy', 'Dany', 'Ella']),
        'English' : pd.Series([3, 2.6, 2, 1.7, 3]),
     }

data_2 = {'name' : pd.Series(['Alice', 'Bob', 'Cathy', 'Dany', 'Ford']),
        'Math' : pd.Series([1.1, 2.2, 3.3, 4.4, 5]),
     }
df_1 = pd.DataFrame(data_1)
df_2 = pd.DataFrame(data_2)
print('df_1)
print('\n')
print(df_2)
print('\n')

运行结果:

df_1: 
     name  English
0  Alice      3.0
1    Bob      2.6
2  Cathy      2.0
3   Dany      1.7
4   Ella      3.0


df_2: 
     name  Math
0  Alice   1.1
1    Bob   2.2
2  Cathy   3.3
3   Dany   4.4
4   Ford   5.0

一、数据合并 pd.merge

1.1 把右边的数据融合到左边

df_3 = pd.merge(df_1, df_2, how = 'left', on = 'name')
# 将 df_2 融合进 df_1,以 'name' 这一列为筛选原则
# 我们可以 同时对多列进行筛选 on = ['column_1', 'column_2']
print(df_3)
print('\n')

运行结果:

    name  English  Math
0  Alice      3.0   1.1
1    Bob      2.6   2.2
2  Cathy      2.0   3.3
3   Dany      1.7   4.4
4   Ella      3.0   NaN

1.2 把左边的数据融合到右边

df_3 = pd.merge(df_1, df_2, how = 'right', on = 'name')
# 将 df_1 融合进 df_2,以 'name' 这一列为筛选原则
print(df_3)
print('\n')

运行结果:

    name  English  Math
0  Alice      3.0   1.1
1    Bob      2.6   2.2
2  Cathy      2.0   3.3
3   Dany      1.7   4.4
4   Ford      NaN   5.0

1.3 取交集

df_3 = pd.merge(df_1, df_2, how = 'inner', on = 'name')
# 默认为取交集
print(df_3)
print('\n')

运行结果:

    name  English  Math
0  Alice      3.0   1.1
1    Bob      2.6   2.2
2  Cathy      2.0   3.3
3   Dany      1.7   4.4

1.4 取并集

df_3 = pd.merge(df_1, df_2, how = 'outer', on = 'name')
print(df_3)
print('\n')

运行结果:

    name  English  Math
0  Alice      3.0   1.1
1    Bob      2.6   2.2
2  Cathy      2.0   3.3
3   Dany      1.7   4.4
4   Ella      3.0   NaN
5   Ford      NaN   5.0

二、数据过滤 isin

2.1 对原数据集进行筛选,留下与新数据集交集的行数据

df_4 = df_1[df_1.name.isin(df_2.name)]
print(df_4)
print('\n')

运行结果:

    name  English
0  Alice      3.0
1    Bob      2.6
2  Cathy      2.0
3   Dany      1.7

2.2 对原数据集进行筛选,去除与新数据集交集的行数据(留下不在新数据集中的行)

df_4 = df_1[~df_1.name.isin(df_2.name)]
print(df_4)
print('\n')

运行结果:

   name  English
4  Ella      3.0

猜你喜欢

转载自blog.csdn.net/qq_42067550/article/details/106340376
今日推荐