快速读取所有csv文件并更新共享字典

2024-05-08 22:37:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python和熊猫还不熟悉,但我想做的是。 我想通读目录中的所有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

我看文件的顺序无关紧要。我希望同时做这件事,分享字典。除非有更好的方法来实现我的目标。你知道吗


Tags: 文件csv数据in目录pandasdffor
1条回答
网友
1楼 · 发布于 2024-05-08 22:37:05

您可以通过以下方式显著优化逻辑:

  • 只读取第一行。你知道吗
  • 只读取所需列。你知道吗
  • 从所需列的第一个值创建惰性iterable。你知道吗
  • 将结果iterable馈送到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的妙处在于无需预先指定键。另请注意Counterdict的子类,因此您不会放弃任何功能。你知道吗

相关问题 更多 >