2017-01-16 38 views
0

我有2個文件的毗連未正常工作

  • 1包含數據(沒有列標題)
  • 第二包含列標題

我想這個2至1個文件結合起來。我的方法將數據推入數據框,並使用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 

回答

1

結果設置爲

HeaderDataFrame 
DataDataFrame 

你需要改變從你的代碼中的axis = 1到axis = 0的軸,所以

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

隨着axis = 0,我得到的輸出是一條直線。 –

+0

@SachinKamble - 請詳細說明你的意思?什麼直線。越清晰你的描述是更好的人可以幫助 – Imran

+0

直線,我在1行,即單行 –

0

我不確定你想如何合併它們,但通常你只需要使用標題數據(這是我假設的一行)作爲數據中的列標籤,並且爲此你不需要concat

您可以通過重命名列這樣添加頁眉到您的數據幀:

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

你只需要你的標題作爲列標籤的順序相同數據幀列表,當然它必須有與您的列數相同的標籤數量。

或者,您可以使用names-適當的文件讀取功能的參數,將列標籤直接分配給您正在閱讀的文件,例如,使用read_csv()

df = pd.read_csv(filename, names=[label1, label2, label3, ...])