具有混合数据的列

时间:2020-05-19 18:09:13

标签: python excel pandas csv

我有一组数据文件,其中包含三个不同的数据集搜索。这些数据集按单独的表排序,每个表都有自己的列。数据集没有固定的长度(即行)。

我正在寻找一种“清理”数据并将其倒入新数据框的方法,该数据框将收集所有三个数据集(并将包含所有列的连接)。

所以基本上我一直想做的是读取每个列标题,然后将其数据倒入我创建的数据框中的相应列中。但是,新列将与原始列的所有数据“馈送”到文件结尾(包括第一个之下的2个数据集中的错误数据)。

有人可以建议如何解决此问题吗?

谢谢!

例如我有一个看起来像这样的文件:

Column_Header A | Column_Header B | Column_Header C
Data1           | Data 2          | Data 3
Column_Header D | Column_Header E | Column_Header F
Data 4          | Data 5          | Data 6

并且需要数据框看起来像这样

Column_Header A | Column_Header B| Column_Header C | Column_Header D | Column_Header E| Column_Header F
Data1           | Data2          | Data3           |                 |                |
                |                |                 | Data4           | Data5          |Data6

我的代码当前如下所示:

# Gather the files
files = [file for file in os.listdir('C:/Users/user/Downloads/Inventory data/Raw')]

# Create dataframe
all_files_data = pd.DataFrame()

# Add file data to dataframe
for file in files:
    df = pd.read_excel("C:/Users/user/Downloads/Inventory data/Raw/"+file)
    all_files_data = pd.concat([all_files_data, df])

# Add columns to dataframe
all_files_data['Entry_Month'] = ''
all_files_data['Currency'] = ''
all_files_data['Notes'] = ''

但是,输入月份,货币和纸币的值被卡在错误的列中(即供应商名称,购买日期和值)。 我需要某种方式来创建分隔,但我不知道该如何处理...

1 个答案:

答案 0 :(得分:0)

read_excel具有参数nrowsskiprows。这里的想法是,您首先读取n行,直到第二个标题(nrows = n,skiprows = 0),然后读取其余m行(nrows = m,skiprows = n)。如果您不知道此值,可以单独检查每一行,直到其中包含第二个标题为止。

之后,您可以将列与concat函数结合起来。