iT邦幫忙

0

Python學習筆記: Pandas 多欄位、多條件篩選

  • 分享至 

  • xImage
  •  

本文同步發表於小弟自架網站:微確幸資訊站

以下的課程的課名來自公開資料,但教師、學生姓名及其他欄位均為虛構資料(人名為亂數產生)。

假設我們有一個Excel資料檔,記錄了學校的優良課程。
https://ithelp.ithome.com.tw/upload/images/20221117/20122335VDI3cZuSBO.jpg

我們想從所有學生的選課資料中了解選修優良課程的學生資料。
https://ithelp.ithome.com.tw/upload/images/20221117/20122335R5EJjkF1Uu.jpg

import pandas as pd
Location = '0000_範例_優良課程_學生選課.xlsx'
df1 = pd.read_excel(Location, sheet_name='範例優良課程')
print(len(df1))
print(df1.columns)
df1.head()

output:
https://ithelp.ithome.com.tw/upload/images/20221117/20122335sCvgf3I9jz.jpg

df2 = pd.read_excel(Location, sheet_name='範例學生選課')
print(len(df2))
print(df2.columns)
df2.head()

output:
https://ithelp.ithome.com.tw/upload/images/20221117/20122335T8fehZiTvZ.jpg

# 第一種方法
df = pd.merge(df2, df1[['學年', '學期', '課號']], on=['學年', '學期', '課號'])
print(len(df))
print(df.columns)
df.head()

output:
https://ithelp.ithome.com.tw/upload/images/20221117/20122335sTPzyUWjoT.jpg

# 第二種方法
df = df2[df2.set_index(['學年', '學期', '課號']).index.isin(df1.set_index(['學年', '學期', '課號']).index)]
print(len(df))
df.head()

output:
https://ithelp.ithome.com.tw/upload/images/20221117/20122335fmToCcViC1.jpg


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言