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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章