gpt4 book ai didi

python - 根据不在另一个数据集中的值过滤数据集

转载 作者:行者123 更新时间:2023-12-01 09:09:33 25 4
gpt4 key购买 nike

我希望根据某个 ID 是否出现在不同的数据框中来过滤数据集。

虽然我不太喜欢我决定这样做的方式,但如果有我不熟悉的更好的方法,我想对我的数据集应用 bool 函数,将结果放入一个新列,然后从该 True/False 结果中过滤掉整个数据集。

我的主数据帧是df,其中包含ID的另一个数据帧称为ID:

def groups():
if df['owner_id'] not in ID['owner_id']:
return True
return False

这最终被接受(没有语法问题),所以我然后将其应用到我的数据帧,但失败了:

df['ID Groups?'] = df.apply (lambda row: groups() ,axis=1)

结果:

TypeError: ("'Series' objects are mutable, thus they cannot be hashed", 'occurred at index 0')

似乎我尝试使用的数据(ID 既是字母又是数字,因此是字符串)的格式不正确。

我有两个问题:

  1. 我提出的方法是解决这个问题的最佳方法吗?
  2. 如何修复我看到的错误?

如果这是非常明显的事情,我很抱歉,我对 Python 和整个编码的了解非常有限,但我无法找到已经解决此类问题的任何地方。

最佳答案

仅在 df 中保留与 ID 中的 owner_id 匹配的行的表达式:

df = df[df['owner_id'].isin(ID['owner_id'])]

Lambda 表达式会比这个慢得多。

isin 是 Pandas 的方式。 not in 是 Python 集合方式。

您收到此错误的原因是 df['owner_id'] not in ID['owner_id'] 哈希左侧以确定它是否存在于右侧。据报道,df['owner_id'] 属于 Series 类型,并且不可散列。幸运的是,不需要它。

关于python - 根据不在另一个数据集中的值过滤数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51772836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com