Excel里可能有货币换算的工具,但是我需要处理的是像下面这样的带数字带文字的表格,所以需要通过python来进行批量处理
代码如下,用UTF-8读取中文文件的csv可能会出现很多编码错误,解决办法可以看我这篇文章:解决:python打开csv文件时总是因为编码问题报错
import imp
import string
import pandas as pd
import numpy as np
from string import digits
import re
df=pd.read_csv(r'PathToxxx.csv',encoding="utf-8")
print(df.info)
# 看有多少种类的货币
currency_set=set()
for i in df["注册资本"]:
currency_set.add(re.sub(r'[0-9]+','',i))
# 一共有9种货币
for i in currency_set:
print(i)
# 汇率换算
# 万元人民币:1
# 万日元:0.055
# 万美元:6.328
# 万英镑:8.599
# 万澳大利亚元:4.575
# 万欧元:7.160
# 万瑞士法郎:6.874
# 万港元:0.811
# 万德国马克:4.7(2015的数据)
def transfer(money:string):
m=""
if "万元人民币" in money:
m=money.replace("万元人民币","")
m=float(m)
elif "万日元" in money:
m=money.replace("万日元","")
m=float(m)*0.055
elif "万美元" in money:
m=money.replace("万美元","")
m=float(m)*6.328
elif "万英镑" in money:
m=money.replace("万英镑","")
m=float(m)*8.599
elif "万澳大利亚元" in money:
m=money.replace("万澳大利亚元","")
m=float(m)*4.575
elif "万欧元" in money:
m=money.replace("万欧元","")
m=float(m)*7.160
elif "万瑞士法郎" in money:
m=money.replace("万瑞士法郎","")
m=float(m)*6.874
elif "万港元" in money:
m=money.replace("万港元","")
m=float(m)*0.811
elif "万德国马克" in money:
m=money.replace("万德国马克","")
m=float(m)*4.7
return m
# 开始换算
df["注册资本"]=df["注册资本"].map(lambda x:transfer(x))
df.to_csv("PathToxxx.csv",encoding="utf-8")