为什么在写csv时使用集合?)游戏我

  • 本文关键字:集合 游戏 csv python csv
  • 更新时间 :
  • 英文 :


遇到这个话题用Python将结果保存到csv文件

所有我需要-写入csv文件的变化。但是。这段代码窃取了我的一些行))不合理的数量(而不是代码中的五行)

你能解释一下为什么他们在这个简单的动作中使用集合吗?为什么这里要用counter呢?

Use csv.writer:
import csv
with open('thefile.csv', 'rb') as f:
data = list(csv.reader(f))
import collections
counter = collections.defaultdict(int)
for row in data:
counter[row[0]] += 1

writer = csv.writer(open("/path/to/my/csv/file", 'w'))
for row in data:
if counter[row[0]] >= 4:
writer.writerow(row)

这一行

counter = collections.defaultdict(int)

创建一个defaultdict,其值为整数,默认值为0。然后这位

for row in data:
counter[row[0]] += 1

扫描输入,并计算第一个字段中的值在文件中出现的次数。最后,代码只输出第一个值出现至少4次的行。这可以用collections.Counter来代替,但我不知道十年前是否在标准库中。

不确定在原始代码中发生了什么,但我认为它读取输入并创建数据行字典并为每行分配计数器。因此,如果有两条相同的数据线,这将无法正常工作。然后它使用这个字典来确定哪些是前4行,以便在写入输出时跳过它们(这不是很好地使用字典)。

if counter[row[0]] >= 4:

最重要的是,这是11年前的老答案。当时处理csv文件的Python库(如pandas)并不常用。现在做这样的事情就容易多了。

import pandas as pd
# semicolon separated and comma decimals, skip first 4 rows
df_in = pd.read_csv("oldfile.csv", delimiter=";", decimal=",", skiprows=(0,1,2,3))
# comma separated and point decimals
df_in.to_csv("newfile.csv", sep=",", decimal=".")

相关内容

  • 没有找到相关文章