【问题标题】:Columns with mixed data包含混合数据的列
【发布时间】:2020-05-19 18:09:13
【问题描述】:

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

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

所以基本上我一直在尝试做的是读取每个列标题,然后将其数据倒入我创建的数据框中的相应列中。但是,新列会“馈送”所有原始列的数据,直到文件结束(包括来自第一个下方的 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'] = ''

但是,输入月份、货币和票据的值被卡在错误的列中(即供应商名称、购买日期和价值)。 我需要一些方法来创建分离,但我不知道如何处理这个......

【问题讨论】:

  • 您好,欢迎 StackOverflow!您介意编辑您的帖子并向我们展示您迄今为止对代码所做的尝试吗?届时我们将能够更好地为您提供帮助。
  • @DanielWalker 谢谢!已添加。

标签: python excel pandas csv


【解决方案1】:

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

之后,您可以将列与concat 函数组合。

【讨论】:

    猜你喜欢
    • 2012-05-11
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2015-11-17
    相关资源
    最近更新 更多