pandas读取原来的Excel数据,并根据字典做一个映射,然后重新写入Excel

参考

pandas写入覆盖 原来的Excel

改之前
pandas读取原来的Excel数据,并根据字典做一个映射,然后重新写入Excel_第1张图片

建立字典键值对映射 改完之后
映射规则

d = {1 :7 , 2 :6 , 3 : 3,4:1 ,5:2 ,6:8 ,7: 4,8: 5,9:11 ,10:9 ,11:10  }

pandas读取原来的Excel数据,并根据字典做一个映射,然后重新写入Excel_第2张图片
完整代码:

# -*- coding:utf-8 -*-


import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
df1=pd.read_excel('讯飞—刘老师.xlsx',usecols=[1])                  #通过指定列索引号导入第0列
print(type(df1))
#遍历DataFrame表格数据的每一列
for col in df1.columns:
    series = df1[col]
    # 可以看到返回的是series对象
    #print(series)
print(type(series))
#根据字典做一个映射
d = {1 :7 , 2 :6 , 3 : 3,4:1 ,5:2 ,6:8 ,7: 4,8: 5,9:11 ,10:9 ,11:10  }
new_list=[]
#根据传入的val值返回字典对应的key,这一步完成了映射
def return_key(val):
    for key, value in d.items():
        if value==val:
            return key
#遍历series的值,把值对应的key添加到新的列表中,得到了映射后的列表。
for value in series.values:
    temp=return_key(value)
    #print(temp)
    new_list.append(temp)
#得到映射后的列表赋值给df对象,便于后面的to_excel方法写入
df1.iloc[:,0]=new_list

#测试是否成功修改
for col in df1.columns:
    s = df1[col]
    # 可以看到返回的是series对象
    print(s)
    #可以看到已完成根据字典的映射,那么最后一步  写入即可
df1.to_excel('讯飞—刘老师.xlsx', sheet_name="sheet1", index=False)


你可能感兴趣的:(python,pandas,excel,python)