用python处理两个excel
第一个excel表格式如下班级 | 得分
一年级 | 10
二年级 | 20
三年级二班| 30
第二个excel表格式如下
班级
一年级一班
二年级二班
三年级
我想实现的是,把第一个表的得分填到第二个表。两个表的班级列,要么表1包含表2,要么表2包含表1,最终的结果是
班级 | 得分
一年级一班 | 10
二年级二班 | 20
三年级 | 30
请问用pandas应该怎么实现,谢谢! merge合并函数 import pandas as pd
# 假设df1和df2是已经读入的两个DataFrame
# df1的结构: 班级 | 得分
# df2的结构: 班级
def standardize_class_name(class_name):
# 根据您的规则来处理或调整班级名称
# 例如,如果班级名称中不包含"一班"或"二班",则追加"一班"
if "一班" not in class_name and "二班" not in class_name:
class_name += "一班"
return class_name
# 应用这个函数到df2的班级列上
df2['班级'] = df2['班级'].apply(standardize_class_name)
# 现在合并df1和df2,根据班级列
# 使用左合并保留df2的结构
result = pd.merge(df2, df1, on='班级', how='left')
# 显示最终结果
print(result)
# 如果需要输出到excel
# result.to_excel("output.xlsx", index=False) path_a=r"C:\Users\110\Desktop\a.xlsx"
path_b=r"C:\Users\110\Desktop\b.xlsx"
df_a=pd.read_excel(path_a)
df_b=pd.read_excel(path_b)
df_s=pd.merge(df_a,df_b,left_on=df_a['班级'].str[:3],right_on=df_b['班级'].str[:3],suffixes=("a","b"))
df_s.rename(columns ={"key_0":"班级"},inplace=True)
print(df_s)
班级 班级a得分a 班级b得分b
0一年级 一年级 10一年级一班 1
1二年级 二年级 20二年级二班 2
2三年级三年级二班 30 三年级 3
羡慕大神 谢谢两位大神的回复
页:
[1]