连接操作未按预期工作

4

我有两个文件

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

我想将这两个文件合并成一个文件。我的做法是将数据推入数据框架中,并在它们上使用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
2个回答

1

你需要在代码中将轴从axis=1更改为axis=0,因此

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

使用axis=0时,我得到的输出是一条直线。 - Sachin Kamble
@SachinKamble - 请详细说明您的意思?是哪一条直线?您的描述越清晰,别人就能更好地帮助您。 - Imran
直线表示,我正在获取记录,即单行。 - Sachin Kamble

-1

我不确定您想如何将它们组合在一起,但通常您只需使用标题数据(我假设是一行)作为数据中的列标签,对此您不需要使用concat

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

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

你只需要将标题作为列标签列表按照与数据框相同的顺序排列,当然标签数量必须与列数相同。

或者您可以使用适当的文件读取函数的names参数来直接为您正在读取的文件分配列标签,例如使用read_csv()

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接