【发布时间】:2019-07-08 12:57:15
【问题描述】:
我正在研究一种从input.csv 读取数据的方法,并根据产品的id 更新output.csv 中的stock 列
这些是我现在正在做的步骤:
1.将产品信息从input.csv读入input_data = [],这将返回一个OrderedDict列表。
input_data 目前看起来像这样:
[OrderedDict([('id', '1'), ('name', 'a'), ('stock', '33')]),
OrderedDict([('id', '2'), ('name', 'b'), ('stock', '66')]), OrderedDict([('id', '3'), ('name', 'c'), ('stock', '99')])]
2. 将当前产品信息从output.csv 读入output_data = [],与input_data 具有相同的架构
3. 遍历input_data 并根据input_data 中的股票信息更新output_data 中的stock 列。 最好的方法是什么?
-> 重要的一点是input_data 可能有一些 ID 存在于input_data 但不存在于output_data。我想为input_data 和output_data 共同的ids 更新股票,并且“新”ids 很可能会被写入新的 csv。 p>
我在想类似的东西(这不是真正的代码):
for p in input_data:
# check if p['id'] exists in the list of output_data IDs (I might have to create a list of IDs in output_data for this as well, in order to check it against input_data IDs
# if p['id'] exists in output_data, write the Stock to the corresponding product in output_data
# else, append p to another_csv
我知道这看起来很混乱,我要的是一种合乎逻辑的方式来完成这项任务,而不会浪费太多的计算时间。有问题的文件可能有 100,000 行长,因此性能和速度将是一个问题。
如果我来自 input_data 和 output_data 的数据是 list 的 OrderedDict ,那么检查 input_data 中的 id 并将 stock 写入产品的最佳方法是output_data 中的 id 完全相同?
【问题讨论】:
-
我建议您查看 pandas 来完成这项任务:pandas.pydata.org/pandas-docs/stable
标签: python list csv ordereddict