axllen 发表于 2024-3-21 17:24

用python处理两个excel

第一个excel表格式如下

班级             |    得分
一年级         |    10
二年级         |    20
三年级二班|   30


第二个excel表格式如下

班级
一年级一班
二年级二班
三年级

我想实现的是,把第一个表的得分填到第二个表。两个表的班级列,要么表1包含表2,要么表2包含表1,最终的结果是

班级               |    得分
一年级一班    |    10
二年级二班    |   20
三年级         |   30


请问用pandas应该怎么实现,谢谢!

sai609 发表于 2024-3-21 17:30

merge合并函数

arrymarry 发表于 2024-3-21 17:37

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)

lisongmei 发表于 2024-3-21 17:51

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

Agri6789 发表于 2024-3-21 23:01

羡慕大神

axllen 发表于 2024-3-22 10:55

谢谢两位大神的回复
页: [1]
查看完整版本: 用python处理两个excel