我有一个csv文件,其中一列是十六进制值,这是一些产品号。像'182666828988','183a2d4e3a12'我必须拿一个新产品没有。如果我必须更新产品编号的频率,请检查它是否已经存在。 if如果不在频率为1的数据集中添加新行。在python中执行此操作的最有效方法是什么,因为我有一个非常大的数据集 感谢名单
答案 0 :(得分:2)
如果您的文件可以放入RAM中 - 我认为您可以使用简单的python字典来解决问题。假设'182666828988'已出现5次,'183a2d4e3a12'出现2次:
table = {}
table['182666828988'] = 5
table['183a2d4e3a12'] = 2
def fun(x):
if x not in table:
table[x] = 0
table[x] += 1
fun('183a2d4e3a12')
fun('124124124124')
print table
{'182666828988':5,'124124124124':1,'183a2d4e3a12':3}
答案 1 :(得分:1)
如果您允许使用内存中的字典,则可以使用Python defaultdict
。如果它们不存在,它将自动创建零计数的新条目。
from collections import defaultdict
freq = defaultdict(int)
freq['182666828988'] += 1
freq['182666828988'] += 1
freq['183a2d4e3a12'] += 1
print(freq)
输出
defaultdict(<class 'int'>, {'182666828988': 2, '183a2d4e3a12': 1})