是否可以在Python中将数据从一个Excel文件移动到另一个文件时分割数据?熊猫或 openpyxl

问题描述 投票:0回答:1

本质上我需要将一个 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)

但在尝试更改数据时不确定从哪里开始。

python pandas excel openpyxl data-conversion
1个回答
0
投票

这是一个简单的示例,如果只是复制数据 示例表有两列; ‘名称’和‘地址’在哪里
姓名包括以空格分隔的“名字”和“姓氏” 地址包括“街道”“城市”“州”和“邮政编码”,以逗号分隔

示例代码读取源 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 写入从数据帧中排除了标题。但是,如果愿意,目标表可以为空,并且也可以写入标题。

© www.soinside.com 2019 - 2024. All rights reserved.