【问题标题】:Copy columns from one excel file to another existing excel file with different column headers and column locations using Python使用 Python 将列从一个 Excel 文件复制到另一个具有不同列标题和列位置的现有 Excel 文件
【发布时间】:2022-11-03 23:01:14
【问题描述】:

我想从一个源excel文件的某些列中复制数据并将其放在第二个源excel文件的某些标题下,然后制作一个目标excel文件。我提供了所有 3 的图像。

我尝试过使用 pandas、NumPy 和 openyxl 库,但我只能准确地复制 excel 文件,而不是我需要的格式。我是否需要单独复制列,因为没有其他模式?

#importing python libraries
import pandas as pd
import numpy as np
#import openpyxl as xl

#reading source excel files and storing into two DataFrames
df1 = pd.read_excel('C:/Users/shaina.pearson/Documents/ACRS_Test_Case/NJII_Test_06_16_22.xlsx')
df2 = pd.read_excel('C:/Users/shaina.pearson/Documents/ACRS_Test_Case/NJII_ACRS_YYYYMMDD.xlsx')

#reading data by row
datax = []

def getRows(excel_file, sheet_name, start_row = 1):
    excel_data = pd.read_excel(excel_file, sheet_name = sheet_name, header=None)
    #print(excel_data)
    size = excel_data.shape
    #print(size)
    row_num = size[0]
    for i in range(start_row, row_num):
        data = excel_data.iloc[i].values.tolist()
        datax.append(data)
    return datax

getRows("C:/Users/shaina.pearson/Documents/ACRS_Test_Case/NJII_Test_06_16_22.xlsx", "Resident Listing Report", 0)

a = np.array(datax)

#print(a[:,[0,1,2,4,6,9,13,14]])

df = pd.DataFrame(a[:,[0,1,2,4,6,9,13,14]], columns = ['A','B','C','D','E','F','G','H'])

#print(df)

#df.to_excel("C:/Users/shaina.pearson/Documents/ACRS_Test_Case/Test.xlsx")

df2 = df(pd.DataFrame(a[:,[0,1,2,4,6,9,13,14]], columns =['C','B','A','D','F','H','E','G']))
df2.to_excel("C:/Users/shaina.pearson/Documents/ACRS_Test_Case/Test.xlsx")

print(df2)

#print(type(df))

df1 df3

【问题讨论】:

  • pandas 和 numpy 都可能与此任务无关。
  • Example of Source and Destination File:你忘了附上数据?
  • @BigBen 感谢您的评论。我是 openpyxl 的新手,无法弄清楚如何仅使用 openpyxl 将列值复制到现有 Excel 工作表的正确列中。
  • @Bhargav 谢谢,我附上了照片
  • move_range()?为什么?

标签: python excel pandas numpy openpyxl


【解决方案1】:

这可以通过pandas 完成

Excel 1

Excel 2

使用pandas

import pandas as pd

df = pd.read_excel(r"file1.xlsx")

df2 = pd.read_excel(r"file2.xlsx",header=None)

df2 =df2.dropna().reset_index()
df2 = df2.drop(columns=['index'])


df2.columns = df2.iloc[0]
df2 = df2.shift(-1)

final_df = pd.concat([df, df2], axis=1)
print(final_df)

final_df.to_excel("output_resulst.xlsx")

最终输出 Excel

【讨论】:

  • 可以这样做,不是很理想。直接在openpyxl中更容易做到。
  • 是的,不知道openpyxl ....OP提到他也尝试过pandas ...所以,只是根据那个写逻辑
  • 您会如何处理非表格数据以及图表和格式等内容? Pandas 使用 openpyxl 来读写 XLSX 文件。
  • 从未想过@CharlieClark ...正如OP提到的一些示例excel文件,我刚刚重新创建了它们并应用了pandas ...openpyxl真的支持图表等其他数据格式吗?...有趣...我将探索这个图书馆...感谢您的投入!!!!!!
  • 嗨@Bhargav,感谢您的回复!我编辑了我的问题,这样可能会更清楚。我有一张用作表格的 excel 表格和一张我需要将数据从表格中提取出来的 excel 表格。所以,我尝试使用 concat,但这不会将列按正确的顺序排列,也不会删除不需要的列
猜你喜欢
  • 2021-03-16
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
相关资源
最近更新 更多