Concat没有按预期工作

时间:2017-01-16 19:07:13

标签: python python-2.7 pandas

我有2个文件

  • 第一个包含数据(无列标题)
  • 第二个包含列标题

我想将这个2合并为1个文件。我的方法是将数据推送到数据框中,并使用concat获取文件结果集。

我的代码现在直到

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <div class="row">
    <div class="first-class col-xs-9 col-md-7">.col-xs-9 .col-md-7</div>
    <div class="col-xs-3 col-md-5">.col-xs-3 .col-md-5</div>
  </div>

  <div class="row">
    <div class="col-xs-6 col-md-10">.col-xs-6 .col-md-10</div>
    <div class="start-with-something-else col-xs-6 col-md-2">.col-xs-6 .col-md-2</div>
  </div>

  <div class="row">
    <div class="so many classes 
                col-xs-6">.col-xs-6</div>
    <div class="bootstrap spam helper classes
                col-xs-6">.col-xs-6</div>
  </div>  
</div>
<p>If the javascript worked then the above column elements have a background of blue instead of red.</p>

现在,使用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)

而我得到的结果是

HeaderDataFrame
DataDataFrame

2 个答案:

答案 0 :(得分:1)

您需要在代码中将轴从轴= 1更改为轴= 0,所以

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

答案 1 :(得分:0)

我不确定你想要如何组合它们,但通常只使用标题数据(我假设的一行)作为数据中的列标签,为此你不需要{{1 }}

您可以通过重命名以下列来向数据框添加标题:

concat

您只需将标题作为列标签列表,其顺序与数据框相同,当然它必须与您的列数具有相同数量的标签。

或者,您可以使用相应文件读取功能的df.columns = [label1, label2, label3, ...] - 参数直接为您正在阅读的文件指定列标签,例如:使用names

read_csv()