Python Excel в CSV копирование данных столбца с разными именами заголовков - PullRequest
2 голосов
/ 25 октября 2019

Итак, вот моя ситуация. Используя Python, я хочу скопировать определенные столбцы из Excel spreadsheet в определенные столбцы на листе csv.

Имена предварительно заполненных заголовков столбцов имеют разные имена в каждой электронной таблице, и мне нужно использовать подсписок в качестве параметра.

Например, в первом подсписке столбец данных в excel необходимо скопировать из / в:

spreadsheet      csv
"scan_date" => "date_of_scan" 

Два подсписка в качестве параметров: одно из имен, скопированное из excel, одно из именгде вставить в CSV.

Не уверен, что подсписок словаря будет лучше, чем два отдельных подсписка?

Кроме того, имена заголовков столбцов csv находятся в строке B (а не в строке A, как в Excel), которая имеет сложные вещи, такие как фреймы данных.

Итак, в идеале я хотел бы иметь подспискипреобразуется в массивы,

  • электронная таблица перебирает столбцы, чтобы найти "scan_date"
  • копирует данные
  • перебирает, находит "date_of_scan" в csv
  • вставляетdata
  • переходит ко второму элементу в подсписках и повторяется.

Я пробовал pandas и openpyxl и просто не могу понять подход/ Синтаксис как это сделать.

Любая помощь будет принята с благодарностью. Спасибо.

Правка уточнения: файл csv содержит некоторые ранее существовавшие данные. Также я не могу поменять заголовки на разные столбцы. Таким образом, если «date_of_scan» находится в столбце «RF», то он должен оставаться в столбце «RF». Я смог скопировать, скажем, 5 столбцов данных из Excel во временную электронную таблицу, а затем объединить их в CSV, но он всегда перемещал вставленные столбцы в начало документа CSV (столбцы A, B, C, D, E).

1 Ответ

0 голосов
/ 25 октября 2019

Трудно узнать ответ, не видя конкретного набора данных, но мне кажется, что более простой подход может заключаться в том, чтобы просто превратить ваш лист Excel в df, отбросить все, кроме нужных вам столбцов в csvзатем напишите csv с пандами. Вот некоторый псевдо-код.

import pandas as pd

df=pd.read_excel('your_file_name.xlsx')

drop_cols=[,,,]  #list of columns to get rid of

df.drop(drop_cols,axis='columns')


col_dict={'a':'x','b':'y','c':'z'} #however you want to map you new columns in this example abc are old columns and xyz are new ones


#this line will actually rename your columns with the dictionary
df=df.rename(columns=col_dict)


df.to_csv('new_file_name.csv')  #write new file

, и он действительно будет работать в python, но я создал df из фиктивных данных вместо файла excel.

#with dummy data
df=pd.DataFrame([0,1,2],index=['a','b','c']).T
col_dict={'a':'x','b':'y','c':'z'}
df=df.rename(columns=col_dict)
df.to_csv('new_file_name.csv')  #write new file
...