2017-01-16 6 views
0

У меня есть 2 файлаConcat не работает, как ожидалось

  • 1-й, содержащий данные (Нет Column Header)
  • второй Содержащие Column Header

Я хочу, чтобы объединить это 2 в 1 файл. Мой подход подталкивает данные в dataframe и использует concat на них, чтобы получить набор результатов файла.

Мой код До сих пор

import pandas as pd 
from xlrd import open_workbook 

#contains mapping, Column present 
#DataFileName FolderLocation ColumnFileName 
#Data1   F:\Desktop  ColFile1 
#Data2   F:\Desktop  ColFile2 

filelocation = 'F:\Desktop\Mapping.xlsx' 
wb = open_workbook(filelocation) 
Separator = ',' 
items = [] 
for sheet in wb.sheets(): 
    number_of_rows = sheet.nrows 
    number_of_columns = sheet.ncols 
    for row in range(1, number_of_rows): 
     for col in range(number_of_columns): 
      ColumnFileName = sheet.cell(row,0).value 
      Path = sheet.cell(row,1).value 
      DataFileName = sheet.cell(row,2).value 

      DataFileCompName = Path + "\\" + DataFileName +FileExtension 
      ColumnFileCompName = Path + "\\" + ColumnFileName+ FileExtension 
      HeaderDataFrame = pd.read_csv(ColumnFileCompName,sep=Separator)#,index_col=0)#,header=0) 
      DataDataFrame = pd.read_csv(DataFileCompName,sep=Separator)#,header=None) 

      CompleteDataFrame = pd.concat([HeaderDataFrame,DataDataFrame], ignore_index=True,axis=1) 

Теперь, с CONCAT я хочу результат устанавливается в качестве

HeaderDataFrame 
DataDataFrame 

В то время как я получаю результат, как

HeaderDataFrame|DataDataFrame 

ответ

1

вам нужно изменить ось от оси = 1 до оси = 0 в вашем коде, поэтому

CompleteDataFrame = pd.concat([HeaderDataFrame,DataDataFrame], ignore_index=True,axis=0) 
+0

С осью = 0 выход, который я получаю, является прямой линией. –

+0

@SachinKamble - пожалуйста, уточните, что вы имеете в виду? какая прямая линия. Чем яснее ваше описание, тем лучше кто-то может помочь – Imran

+0

прямая линия, как в, я получаю записи в 1 строке, т.е. одна строка –

0

Я не уверен, как вы хотите их комбинировать, но обычно вы просто используете данные заголовка (который, как я полагаю, является одной строкой), как столбцы в ваших данных, и для этого вам не нужно concat ,

Вы можете добавить заголовки к вашему dataframe путем переименования столбцов, как это:

df.columns = [label1, label2, label3, ...] 

Вам просто нужен ваш заголовок в виде списка заголовков столбцов в том же порядке, что и dataframe, и, конечно, он должен иметь то же количество меток, что и количество столбцов.

В качестве альтернативы вы можете использовать параметр names -параметра соответствующей функции чтения файлов, чтобы напрямую назначать метки столбцов файлам, которые вы читаете, например. используя read_csv():

df = pd.read_csv(filename, names=[label1, label2, label3, ...]) 
Смежные вопросы