各位前辈大家好~
手上有个专案希望能达成自动化
首先是我会收到来自其他人的xlsx档案(名称假设为new_data.xlsx)
接着要把里面的资料腾到一个“汇总表.xlsx”
目前都是以满人工的方式处理
因此尝试用pandas写了个自动合并资料的程式
但只适用在“new_data.xlsx”跟“汇总表.xlsx”字段名称一致的情形下
范例:
汇总表.xlsx https://imgur.com/a/JaToUuv (5个column)
new_data.xlsx https://imgur.com/q4Mf0ho (一样5个column)
另因new_data.xlsx的WW Revenue字段是千位表示,所以贴进汇总表要乘以1,000
两个档案合并后会长这样 https://imgur.com/a/eKRRmG9
我的code如下:
import pandas as pd
import xlrd
df_check = xlrd.open_workbook("new_data.xlsx")
sheet_check = df_check.sheet_names()
'''因new_data.xlsx可能不只一个sheet要汇入汇总表,
故先建立sheet_check的list把所有在new_data.xlsx的sheet名称存起来'''
add_sheet = []
while True:
a = input("Please enter the sheet name to be combined (Enter N when
finished): ")
if a in sheet_check:
add_sheet.append(a)
elif a == "N":
break
else:
print("No such sheet! Please enter sheet name again.")
'''让使用者输入要汇入汇总表的sheet名称,当输入N时跳出循环;输入非在new_data.xlsx
内的sheet名称时跑else'''
database = pd.read_excel("汇总表.xlsx")
#读取汇总表
df = pd.read_excel("new_data.xlsx", sheet_name = add_sheet)
#读取使用者想要汇入汇总表的sheets
for i in add_sheet:
df[i]["WW Revenue"] = df[i]["WW Revenue"] * 1000 #汇入前WW Reveune先乘千
df_combined = database.append(pd.DataFrame(data = df[i]),
ignore_index=True)
database = df_combined
print df_combined)
df_combined.to_excel("finished_database.xlsx", index = False)
===========================================================================
在字段名称相同的情形下这样都没问题,但我目前遇到2个问题:
new_data的字段跟汇总表不同: https://imgur.com/a/hUXcwb6
(1)字段名称从row2开始 (且row2 and row3为合并储存格形式)
(2)Volume跟Revenue有包含美国跟台湾,以及两者加总(WW),
输入汇总表我仅需要WW的数值。
(也就是此new_data G栏存入汇总表Volume字段、
J栏乘以1,000后存入汇总表WW Revenue字段)
请问有办法对于我现有的code做修改吗?
还是只能用别的方式呢?
非常感谢大家!!