Python Pandas копирует столбцы с одного листа на другой лист без изменения каких-либо данных?

У меня есть файл excel с двумя листами. Я хотел бы скопировать 3 столбца из первого листа во второй лист.

Заметка:

Но это не желаемый результат.

Если панды не могут этого сделать, не могли бы вы предложить другой пакет python, который мог бы работать?

В случае, если я недостаточно четко описываю проблему, я загружаю рис, который может помочь более или менее. Thx для ваших ответов ~

JPG

UPDATE [2017.07.24]:

Наконец я нахожу свою ошибку!

вставьте один столбец с номером индекса, а затем следуйте разрешению b2002, все будет хорошо. 🙂

Этот метод использует pandas и xlsxwriter .

Setup (создать демонстрационный файл excel):

 import pandas as pd df1 = pd.DataFrame({'1_A': [1,2,3,4], '1_B': [5,4,6,5], '1_C': [8,7,9,0], '1_D': [9,7,8,5], '1_E': [2,4,9,8]}) df2 = pd.DataFrame({'1_A': [5,4,1,3], '1_B': [55,2,3,4]}) setup_dict = {'Sheet_1': df1, 'Sheet_2': df2} with pd.ExcelWriter('excel_file.xlsx', engine='xlsxwriter') as writer: for ws_name, df_sheet in setup_dict.items(): df_sheet.to_excel(writer, sheet_name=ws_name) 

(Начните здесь, чтобы прочитать существующий файл excel)

 #Read your excel file, use "sheetname=None" to create a dictionary of #worksheet dataframes. (Note: future versions of pandas will use #"sheet_name" vs. "sheetname"). #Replace 'excel_file.xlsx' with the actual path to your file. ws_dict = pd.read_excel('excel_file.xlsx', sheetname=None) #Modify the Sheet_2 worksheet dataframe: #(or, create a new worksheet by assigning concatenated df to a new key, #such as ws_dict['Sheet_3'] = ...) ws_dict['Sheet_2'] = pd.concat([ws_dict['Sheet_2'][['1_A','1_B']], ws_dict['Sheet_1'][['1_A','1_B','1_C']]], axis=1) #Write the ws_dict back to disk as an excel file: #(replace 'excel_file.xlsx' with your desired file path.) with pd.ExcelWriter('excel_file.xlsx', engine='xlsxwriter') as writer: for ws_name, df_sheet in ws_dict.items(): df_sheet.to_excel(writer, sheet_name=ws_name) 

Другие методы могут использоваться для объединения столбцов, таких как объединение (например, с различными суффиксами, представляющими исходные рабочие листы), поскольку все рабочие листы преобразуются в числовые кадры при чтении файла excel.

EDIT (для нового листа и уникальных имен столбцов …)

 ws_dict = pd.read_excel('excel_file.xlsx', sheetname=None) #Modify the Sheet_2 worksheet dataframe: #(or, create a new worksheet by assigning concatenated df to a new key, #such as ws_dict['Sheet_3'] = ...) ws_dict['Sheet_3'] = ws_dict['Sheet_2'][['1_A','1_B']].join(ws_dict['Sheet_1'][['1_A','1_B','1_C']], lsuffix='_sh2', rsuffix='_sh1', how='outer') #Write the ws_dict back to disk as an excel file: #(replace 'excel_file.xlsx' with your desired file path.) with pd.ExcelWriter('excel_file.xlsx', engine='xlsxwriter') as writer: for ws_name, df_sheet in ws_dict.items(): df_sheet.to_excel(writer, sheet_name=ws_name) 

Если вы используете Excel и Python для Windows (а если нет, для будущих читателей), рассмотрите решение SQL с подключением ODBC к JET / ACE Engine, которое может запрашивать книги Excel, собственные базы данных Access и даже текстовые файлы (csv / tab / текст). Этот движок, который является DLL-файлами, устанавливается по умолчанию с компьютерами Windows или MS Office. Такой подход позволяет избежать открытия любой книги.

Просто запустите INNER JOIN на листах и ​​используйте read_sql() для panda, чтобы импортировать результаты запросов непосредственно в dataframe. Соединение может использовать pyodbc или pypyodbc . И поскольку вы работаете в SQL, SELECT нужны столбцы, переименовываете их, фильтруете с другими рабочими таблицами WHERE , JOIN или UNION и в других книгах, даже объединяете с GROUP BY :

 import pyodbc import pandas as pd strfile = "C:\Path\To\Workbook.xlsx" conn = pyodbc.connect(r'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};' + \ 'DBQ={};'.format(strfile), autocommit=True) strSQL = " SELECT s1.[1_A] As s1_1_A, s1.[1_B] As s1_1_B," + \ " s2.[1_A] AS s2_1_A, s2.[1_B] As s2_1_B, s2.[1_C] As s2_1_C" + \ " FROM [Sheet1$] s1" + \ " INNER JOIN [Sheet2$] s2 ON s1.[index] = s2.[index]" df = pd.read_sql(strSQL, conn) conn.close() 
  • Как превратить Dataframe в массив с определенными спецификациями на Pandon Pandas
  • Сопоставьте значения из 3 столбцов из двух разных кадров данных и соответственно слейте их
  • Проблемы с XLWings / Excel, обрабатывающие «формулы многоячеечных массивов»
  • как заполнять цветные ячейки 2-процентными данными из других ячеек
  • Изменение типа файла CSV без открытия
  • Python Pandas DataFrame считывает точный заданный диапазон в листе excel
  • Pandas: Итерация через список DataFrames и экспорт каждого в Excel
  • Напишите dataframe, чтобы преуспеть с заголовком
  • Изменить столбец в df из столбца из другого
  • Pandas: создание кадра данных из каждой электронной таблицы в большом файле excel
  • Поворот текста заголовка в ячейках панд
  • Interesting Posts

    Наиболее эффективный способ сортировки и сортировки синтаксиса VBA

    Функция для удаления любых символов перед первым номером в строке и любыми символами после точки / точки с запятой

    Строка поиска для определенного текста и, если имеется, скопируйте и вставьте его в ту же строку и пустой столбец

    (VBA) Как назначить ячейку столбцов в соответствующую группу и вставить группы групп в групповой лист?

    повторить задачу, пока не появится больше ошибок vba

    Найдите ячейку (используя VLookup) и используйте ячейку, найденную в диапазоне

    Как сохранить график от Excel в качестве изображения / PDF?

    Формула петлевой пачки до следующей ячейки в диапазоне пуста

    Ускорьте сценарий поиска Excel VBA

    Как назначить значение ячейке в excel VBA после очистки валидации

    Госпожа excel – как я могу добавить 1 день к моей персонализированной дате?

    Как удалить дубликаты между двумя листами Excel vba

    открыть лист checkbox проверяется с помощью vba excel

    Записанные разрывы макросов в форматировании Legend

    Hibernate Bulk loading от excel: предложения по дизайну или подходу для повышения производительности

    Давайте будем гением компьютера.