Python 属性错误:';数据帧';对象没有属性';路径';
我正试图逐步建立一个财务报表数据库。第一步是从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 我的代码在下面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
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)