【问题标题】:Python: Combine set and array [closed]Python:组合集合和数组[关闭]
【发布时间】:2021-02-19 21:25:14
【问题描述】:

我有一组包含唯一 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

【问题讨论】:

  • 请提供minimal reproducible example。你的输入到底是什么?请注意,我不太了解您的数据框的 point,为什么在这里使用 pandas

标签: python arrays set data-mining


【解决方案1】:

你不能以你想要的方式组合它们。您可能想要使用的是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)

【讨论】:

  • 这很好用,但是 collections.Counter 对象会更有效地做到这一点。
  • Counter 没有默认键值。而且他们似乎不需要Counter 的任何其他功能。
  • "Counter 没有默认键值。而且他们似乎不需要 Counter 的任何其他功能" 但是您不需要 默认值核心价值。你只需要Counter(raw)
猜你喜欢
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 2021-11-24
相关资源
最近更新 更多