Python 属性错误:';数据帧';对象没有属性';路径';

Python 属性错误:';数据帧';对象没有属性';路径';,python,pandas,dataframe,Python,Pandas,Dataframe,我正试图逐步建立一个财务报表数据库。第一步是从SEC的EDGAR数据库中收集10 Ks。我有按CIK编号和登录号提取相关8-Ks、10 Ks和10 Qs的代码,并检索相关excel电子表格。下面的代码现在集中在尝试在目录中创建文件夹,然后使用CIK代码命名文件夹,然后从EDGAR数据库中提取电子表格,并使用CIK代码将电子表格保存到文件夹中。我的示例是一个csv文件,我称之为“accessionnumtest.csv”,它有以下标题: 公司名称、报告类型、cik、日期、cik加入 和数据: 4L

我正试图逐步建立一个财务报表数据库。第一步是从SEC的EDGAR数据库中收集10 Ks。我有按CIK编号和登录号提取相关8-Ks、10 Ks和10 Qs的代码,并检索相关excel电子表格。下面的代码现在集中在尝试在目录中创建文件夹,然后使用CIK代码命名文件夹,然后从EDGAR数据库中提取电子表格,并使用CIK代码将电子表格保存到文件夹中。我的示例是一个csv文件,我称之为“accessionnumtest.csv”,它有以下标题:

公司名称、报告类型、cik、日期、cik加入

和数据:

4Less集团有限公司,10K/A,1438901,2019年11月27日,edgar/data/1438901/000121390019024801.txt

AB国际集团公司,10K,1605331,2019年10月22日,edgar/data/1605331/00016357719000384.txt

ABM INDUSTRIES INC/DE/,10K,771497,12/20/2019,edgar/data/771497/000162828019015259.txt

ACTUANT CORP,10K,6955,10/29/2019,edgar/data/6955/000000695519000033.txt

我的代码在下面

import os
import pandas as pd

path = os.getcwd()

folder_path = "C:/metricdatadb/"

df = pd.read_csv("accessionnumtest.csv")

folder_name = df['cik']
print(folder_name)

for row in df.iterrows():
    dir = df.path.join(folder_path, folder_name)
    os.makedirs(dir)

这段代码告诉我,AttributeError:“DataFrame”对象没有属性“path”错误。我已经重命名了路径,检查了标题中的空格。非常感谢您的建议。

关于错误:
os.path.join
。不
pd.path.join
。您调用了错误的模块

也就是说,不管出现什么错误,您的代码都不会执行您试图执行的操作<代码>文件夹\u名称不会为每行更新。您可以执行
row.cik
来获取每个
iterrows()的值


目前还不清楚您的目标是什么,尤其是.csv文件和熊猫。您的代码中似乎有很多奇怪的错误,我认为在尝试像web抓取这样困难的事情之前,可以通过返回学习一些更简单的Python概念来改进这些错误。注:我并不打算放弃,而不是建立基础是这类项目的必要步骤

也就是说,如果我正确理解了您的意图,那么您希望为多个CIK的10-K、10-Q等文件创建一个文件层次结构

应该不需要使用.csv文件或熊猫文件

可能最简单的方法就是在下载它们的同一步骤中完成

这方面的伪代码如下所示:

for cik in list_of_ciks:
     first_file = find_first_file_online();

     if first_file is 10-K:
          save_to_10-K folder for CIK
     if first_file is 10-Q:
          save_to_10-Q folder for CIK
如上所述,您可以跳过.csv文件(另外,请注意,csv代表“逗号分隔值”。数据中的某些条目包含逗号,例如“4Less Group,Inc”。这与csv文件不兼容,因为它会将单个条目拆分为逗号上的两列,将所有数据移动一列)

当您处理数据时,您将希望边处理边生成文件夹

当您迭代一个新的CIK时,为该CIK创建主文件夹。遇到10-K时,请为10-K创建一个文件夹,并使用唯一的名称保存该文件夹。因为您需要使用登录号来获取excel工作表,所以遵循这种命名约定也不错

应该是这样的:

import requests
import pathlib

cik_list = [cik_1, cik_2... cik_n]

for cik in cik_list:
     file = requests.get("cik/accession/Report.xlsx").data

     with open(pathlib.Path(cik, report_type, accession_number + ".xlsx", "wb")) as excel_file:
     excel_file.write(file.data)
上面的代码肯定不会运行,也不包含使其工作所需的所有内容,因为这些信息是由您编写的。将上述概念集成到代码中取决于您


重申一下,您有CIK、登录号和报告类型。要将文件保存在文件夹中,您只需在运行时创建文件夹,格式为“CIK/report\u type/accession.xlsx”

Catradora,我有没有办法就此与您联系?我们应该尝试公开回答这个问题,以便将来有类似问题的人可以找到答案。我想我们遗漏了一些谜题。你能用更多的代码编辑你的问题,更好地解释你想做什么和为什么,我们可以从那里开始吗?很公平。我意识到,如果我想在我分配的时间内成功完成我的项目,我的编程技能并不是我所需要的。这项编程任务大约是更大工作量的2%,应该只需要一两个小时,而我现在正在为此奋斗一周。我似乎不能把全部精力都花在获得我认为需要的简单帮助上,以完成整个项目。我开始认为,如果我想在未来几个月内完成我的项目,我需要雇佣一名熟练的开发人员来完成整个工作。再次感谢卡特拉多拉的帮助
import requests
import pathlib

cik_list = [cik_1, cik_2... cik_n]

for cik in cik_list:
     file = requests.get("cik/accession/Report.xlsx").data

     with open(pathlib.Path(cik, report_type, accession_number + ".xlsx", "wb")) as excel_file:
     excel_file.write(file.data)