背景:
- 有兩個excel,他們有相同的一個列;
- 按照這個列合并成一個大的excel,即vlookup功能,要求:
- 只需要第二個excel的少量的列,比如從40個列中挑選2個列
- 新增的來自第二個excel的列需要放到第一個excel指定的列后面;
-
將結(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
