问题描述
我有一组包含唯一 int32 数字的“项目”。我想将它与阵列频率合并。两者大小相同。
table = {'items': items,'values': frequency}
C1 = pd.DataFrame(data=table)
按预期输出是这样的(第一列包含集合,第二列包含频率:
{A,B} | 25
{E,F,G} | 17
{D} | 5
但我收到一个错误:TypeError: Set type is unordered
解决方法
您无法以您想要的方式组合它们。您可能想要使用的是 defaultdict
from collections import defaultdict
uids = defaultdict(int)
raw = get_data()
for uid in raw:
uids[uid] += 1
这将生成一个字典,其中包含所有 uid 到该 uid 频率的映射。
如果您需要将频率映射到所有随频率出现的 uid,您可以颠倒这个技巧。
frequencies = defaultdict(set)
for uid,frequency in uids.items():
frequencies[frequency].add(uid)