【问题标题】:How can I create dynamic INT variables for daily datasize variations如何为每日数据大小变化创建动态 INT 变量
【发布时间】:2020-04-20 02:18:11
【问题描述】:

每天我都会收到来自不同供应商的许多不同文件,而且大小也大不相同。我正在寻找一些动态代码来决定所有文件的相关内容。我想通过如何将这个文件分解成组件(例如df1, df2, df3)来思考,这将使分析更容易。

基本上前 6 行是关于商店的整体信息 (df1)。

第二个组件保留用于特定商品的销售(从第 9 行开始,在每个文件中以不同的行结束),我不知道如何捕获它。我已经尝试过类似

的东西
numb = df.loc['Type of payment'].index[0] - 2

但它引入了元组而不是行位置(int)。我怎样才能将upperrangelowerrange 保存为动态(int),以便每天它都会带来我正在寻找的正确的df2数据?

在底部的“支付类型”下也存在同样的问题 - 您会注意到第一天包含加密货币,而不是第二天。我需要找到一种方法来获得动态范围以删除错误信息并保持其余信息的完整性。我认为找到lowerrange 将使我能够从该点捕捉到工作表的末尾,但我愿意接受建议。

df = pd.read_csv('GMSALES.csv', skipfooter=2)
upperrange = df.loc['Item Number']  #brings in tuple
lowerrange = df.loc['Type of payment'] #brings in tuple

df1 = df.iloc[:,7] #this works
df2 = df.iloc[:('upperrange':'lowerrange')] # this is what I would like to get to
df3 = df.iloc[:(lowerrange:)]               # this is what I would like to get to

【问题讨论】:

    标签: python pandas data-cleaning


    【解决方案1】:

    您的组织问题是您的数据以电子表格的形式出现,该电子表格用于物理组织而不是功能组织。 “列”只是印刷标签。该文件包含几种类型的异构数据;您希望将其重新组织成单独的数据框是正确的。

    非常简单,您需要逐个客户解析文件——在将文件读入 RAM 之前或之后。

    在您当前的组织中,这仅涉及扫描异构数据框的“df2”范围。我认为最简单的方法是从第 7 行开始,在A 列中查找“项目编号”;那是您的列名行。然后扫描,直到找到A列中没有任何内容的行;备份一行,这会给你lowerrange

    重复付款:找到带有“付款类型”的下一行。我假设您有一些方法可以将支付类型与虚假数据区分开来,例如合法支付类型(字符串)的列表。从“付款类型”开始扫描,直到找到非合法付款类型的行;上一行是你的lowerrange 代表df3

    你能把它放在那儿吗?

    【讨论】:

      猜你喜欢
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多