快速读取所有 csv 文件并更新共享字典
Posted
技术标签:
【中文标题】快速读取所有 csv 文件并更新共享字典【英文标题】:Read all csv files quickly and update shared dictionary 【发布时间】:2019-02-13 02:27:42 【问题描述】:我是 python 和 pandas 的新手,但这就是我想做的。 我想通读目录中的所有 csv 文件并从文件中检索一个数据单元格并更新字典上的计数,检索值是字典中的键。我必须为约 6000 个 csv 文件执行此操作。我怎样才能快速做到这一点?
stats = 'A':0, 'B':0, 'C':0, 'D':0
for file in f:
df = pandas.read_csv(file)
type = df["type"].head(1)[0]
stats[type]+=1
我阅读文件的顺序无关紧要。我希望同时执行此操作,共享字典。除非有更好的方法来实现我想要实现的目标。
【问题讨论】:
你能说得更具体点吗?你能分享一个csv文件看起来如何的例子吗?您对阅读哪个单元格感兴趣?是在前几行吗?字典看起来如何,您是否只对更新一个键值对感兴趣? @jpp 我已经发布了我到目前为止所做的事情 【参考方案1】:您可以通过以下方式显着优化您的逻辑:
只读取第一行。 只读取所需的列。 从所需列的第一个值创建惰性迭代。 将生成的可迭代对象提供给collections.Counter
。
这里有一些代码应该会有所帮助:
from collections import Counter
import pandas as pd
res = Counter(pd.read_csv(file, nrows=1, columns=['type'])['type'].iloc[0] \
for file in f)
Counter
的美妙之处在于无需提前指定键。另请注意Counter
是dict
的子类,因此您不会放弃任何功能。
【讨论】:
以上是关于快速读取所有 csv 文件并更新共享字典的主要内容,如果未能解决你的问题,请参考以下文章