本质上我需要将一个 Excel 文档翻译成另一个。
两张表的格式不同,但包含大部分相同的信息 - 然而在表 1 中,某些数据的格式不同。
例如工作表 1 中的“姓名”和工作表 2 中的“名字”“姓氏”
可以让我的脚本为我做这件事吗?寻找像逗号这样的分隔符来将“地址”拆分为“街道”“城市”“州”“邮政编码”怎么样?或者最好使用 Excel 工具在翻译后完成。
我已经能够使用 openpyxl 直接读取行,代码如下:
step = 2
read_start_row = 4
write_start_row = 3
amount_of_rows = 30
for i in range(0, amount_of_rows, step):
#copy from wb1
c = ws1.cell(row=read_start_row+i, column=4)
#paste in ws2
ws2.cell(row=write_start_row+(i/step), column=4, value=c.value)
但在尝试更改数据时不确定从哪里开始。
这是一个简单的示例,如果只是复制数据
示例表有两列; ‘名称’和‘地址’在哪里
姓名包括以空格分隔的“名字”和“姓氏”
地址包括“街道”“城市”“州”和“邮政编码”,以逗号分隔
示例代码读取源 Excel 工作表,将两列拆分为组成部分,并将结果写回目标工作表
import pandas as pd
### Read data from source sheet
df = pd.read_excel('source.xlsx', sheet_name='Sheet1')
### Split the necessary columns on the delimiters
df[['First', 'Last']] = df['Name'].str.split(' ', n=1, expand=True) # Delimiter is space
df[['Street', 'City', 'State', 'Zip']] = df['Address'].str.split(', ', n=3, expand=True) # Delimiter is comma
### Drop the now unnecessary columns
df = df.drop(['Name', 'Address'], axis=1)
### Reorder columns
df = df[['First', 'Last', 'Street', 'City', 'State', 'Zip']]
### Write to the destination sheet
with pd.ExcelWriter('dest.xlsx', mode='a', engine='openpyxl', if_sheet_exists='overlay') as writer:
df.to_excel(writer, sheet_name="Sheet1", startrow=1, index=False, header=False)
结果数据框
First Last Street City State Zip
0 Mavis West 421 E DRACHMAN TUCSON AZ 85705-7598
1 John Spurs 100 MAIN ST SEATTLE WA 98104
2 Jack East 105 KROME AVE MIAMI FL 33185 3700
在此示例中,目标工作表包含第 1 行中已有的标题(请注意,这是 to_excel 的第 0 行),因此 to_excel 写入从数据帧中排除了标题。但是,如果愿意,目标表可以为空,并且也可以写入标题。