我有这个:
partial = {}
for d in devs["d"]:
for k in a1km:
total = len(cp[(cp["r"]==d) & (cp["s"]==k)])
partial.update({str(d)+str(k): total})
变量cp
和devs
是pandas
数据帧,并且a1km
是包含一个站点以及距该站点1km的所有站点(预先计算)的字典。对于每个d
和每个站点k
,我要输出的结果都是cp
数据框中与查询匹配的所有记录,都存储为total
,所以:
d, k, total
我从没与numpy
一起工作过,我试图尽快学习,但是考虑到实验室中的时间问题,该库太大了,无法处理。所以我的问题是,如何将下面的代码“翻译”为numpy
以提高性能?
您可以过滤数据框并使用pandas.DataFrame.groupby:
tmp = cp[(cp['r'].isin(devs['d'].unique()) & (cp['s'].isin(a1km))]
result_df = tmp.groupby(['r','s']).size()
请注意,这也可能非常慢。
然后将其制成字典:
partial = {str(k[0]) + str(k[1]): v for k,v in result_df.to_dict().items()}