【问题标题】:Convert Duplicate Entries into Dictionaries: Python将重复条目转换为字典:Python
【发布时间】:2021-11-06 06:43:59
【问题描述】:

我有一个包含大约 300 台计算机的数据库,我正试图找出哪些计算机有和没有特定软件。

问题是:这个数据库单独列出了每个软件,每个软件都有重复的计算机名称。

例子:

Computer Name Software.
Computer 1 Windows 7
Computer 1 Microsoft Edge
Computer 2 Windows 7
Computer 2 Microsoft Edge
Computer 3 Windows 7
Computer 4 Windows 10
Computer 4 Microsoft Edge

在此示例中,很容易迭代并让 Python 告诉我哪些计算机安装了 Windows 7。您创建了一个简单的 for 循环,如果它看到 Windows 7,则返回该计算机的值。但是当找出哪台计算机时问题就来了一个没有软件。当我说=!到“Microsoft Edge”,我得到了每一台计算机,因为它读取了没有说 Microsoft Edge 的每一行。

我的想法是....将所有重复的计算机编译成字典,其中键是单个计算机和列表中的应用程序。这样我就可以遍历字典并获得结果。

有人有其他想法吗?如有必要,乐于解释。

【问题讨论】:

标签: python pandas list dataframe dictionary


【解决方案1】:

您可以使用.groupby.filter 列出具有“Microsoft Edge”的组,然后使用.unique 打印计算机名称。例如:

x = df.groupby("Computer Name").filter(
    lambda x: "Microsoft Edge" not in x.values
)
print(x["Computer Name"].unique())

打印没有“Microsoft Edge”的计算机:

['Computer 3']

或者:使用np.setdiff1d

mask = df["Software"].eq("Microsoft Edge")
print(np.setdiff1d(df["Computer Name"], df.loc[mask, "Computer Name"]))

打印:

['Computer 3']

【讨论】:

  • 在尝试将其适应我的数据集时,我遇到了各种错误。不确定最好的方法。
  • 嘿@Andrej,我用它做了更多的工作,效果很好
猜你喜欢
  • 1970-01-01
  • 2019-11-18
  • 2013-08-08
  • 2019-10-19
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
相关资源
最近更新 更多