【发布时间】:2019-01-17 06:17:51
【问题描述】:
我希望根据某个 ID 没有是否出现在不同的数据框中来过滤数据集。
虽然我不喜欢我决定这样做的方式,但如果有我不熟悉的更好方式,我想将布尔函数应用于我的数据集,将结果放入一个新列,然后从该 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 既是字母又是数字,所以是字符串)的格式不正确。
我有两个问题:
- 我提出的方法是解决此问题的最佳方法吗?
- 如何解决我看到的错误?
如果这是非常明显的事情,我深表歉意,我对 Python 和整个编码的了解非常有限,但我无法找到已经解决此类问题的任何地方。
【问题讨论】:
-
错误是因为您试图将
data frame插入到series对象中 -
~df['owner_id'].isin(ID['owner_id'].unique())会给你你的布尔系列
标签: python pandas function filter formatting