【发布时间】:2019-03-03 22:20:55
【问题描述】:
我有超过 6000 个 XML 想要解析并保存为 csv(或其他任何用于存储的内容)。
我需要为每个 XML 执行 JOIN 以将它们加入到大数据帧中。
问题是这个过程花费了很长时间并且使用了太多的内存。
我想知道sql能解决这个问题吗?更快更省内存?
def get_data(lst):
results = pd.DataFrame()
errors = []
for data in lst:
try:
df = parseXML_Annual(data)
try:
results = results.join(df, how = "outer")
except:
results = df
except:
errors.append(data)
return results, errors
results, errors = get_data(lst_result)
【问题讨论】:
-
你的意思是磁盘上有6000个文件吗?你的数据框有多大?那是一次的事情,还是一些常规的工作?
-
我通过 API 获取了 6000 个文件。并将所有 xml 字符串存储到一个列表中。然后循环遍历列表以解析它们。当我进行外部连接时,数据框可能会有点大。列将是 6000。行,可能是 1000 左右。我不知道。这是一份普通的工作。
-
好的,所以每个 XML 基本上都是 2 列的表吧? 6K 列表对于 SQL 来说听起来不是一个好主意,我会尝试调整代码。检查哪个部分减慢了进程的速度,是 XML 解析还是加入。分别为每个部分运行相同的循环。
-
我正在尝试下载财务报表信息。每个 XML 代表一个公司,它有 5 年的不同领域的数据。然后,我想将每个公司连接在一起,索引等于所有字段,列等于公司。解析数据应该很快。我想问题是 JOIN 因为不是每个 xml 共享相同的索引,所以数据框可能非常大。
-
可能是这样的https://dba.stackexchange.com/questions/83951/financial-database-design
标签: python sql database pandas