Pandas實現(xiàn)excel的vlookup并在指定列后輸出

背景:

  1. 有兩個excel,他們有相同的一個列;
  2. 按照這個列合并成一個大的excel,即vlookup功能,要求:
    • 只需要第二個excel的少量的列,比如從40個列中挑選2個列
    • 新增的來自第二個excel的列需要放到第一個excel指定的列后面;
  3. 將結(jié)果輸出到一個新的excel;


    image.png
一、讀取兩個表的數(shù)據(jù)
#學(xué)生成績表
df_grade = pd.read_excel(r"/Users/PycharmProjects/untitled/this/mz_test/學(xué)生成績表.xlsx",engine="openpyxl")
print(df_grade.head())

#學(xué)生信息表
df_sinfo = pd.read_excel(r"/Users/PycharmProjects/untitled/this/mz_test/學(xué)生信息表.xlsx",engine="openpyxl")
print(df_sinfo.head())

目標(biāo):怎樣將第二個“學(xué)生信息表”的姓名、性別兩列,添加到第一個表“學(xué)生成績表”,并且放在第一個表的“學(xué)號”列后面?

二、實現(xiàn)兩個表的關(guān)聯(lián)

篩選第二個表少量的列

df_sinfo = df_sinfo[["學(xué)號","姓名","性別"]]
print(df_sinfo.head())

image.png

兩個表進(jìn)行關(guān)聯(lián)

df_merge = pd.merge(left = df_grade,right =df_sinfo,left_on = "學(xué)號",right_on= "學(xué)號")
print(df_merge)
image.png
三、調(diào)整列的順序
1、查看列
a = df_merge.columns
print(a)
image.png
2、將columns變成python的列表形式
new_columns = df_merge.columns.to_list()
print(new_columns)
image.png
3、按逆序insert,會將"姓名","性別"放到"學(xué)號"的后面
for name in ["姓名","性別"][::-1]:
    new_columns.remove(name)
    new_columns.insert(new_columns.index("學(xué)號") + 1,name)
print(new_columns)
image.png
4、重置columns,并且輸出到excel中
df_merge = df_merge.reindex(columns = new_columns)
df_merge.to_excel("/Users/PycharmProjects/untitled/this/mz_test/合并后學(xué)生成績表.xlsx")
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容