【问题标题】:Pandas: filtering by field contained in setPandas:按集合中包含的字段过滤
【发布时间】:2017-02-26 21:35:56
【问题描述】:

我有一个 DataFrame df 和一组 user_ids: set。如何选择仅包含集合中用户的 df 切片。喜欢:

df[df.user_id in user_ids]

现在这样工作是因为:

'Series' objects are mutable, thus they cannot be hashed

【问题讨论】:

  • df[df.user_id.isin(user_ids)] ?

标签: python pandas filter set


【解决方案1】:

您可以将isin 用于boolean maskboolean indexing 用于过滤:

df = pd.DataFrame({'user_id':[1,2,3],
                   'B':[4,5,6]})

print (df)
   B  user_id
0  4        1
1  5        2
2  6        3

user_ids = set([1,2])

print (df.user_id.isin(user_ids))
0     True
1     True
2    False
Name: user_id, dtype: bool

df1 = df[df.user_id.isin(user_ids)]
print (df1)
   B  user_id
0  4        1
1  5        2

【讨论】:

  • 老兄。这是关于 SO 的第一个isin 问题的可能性有多大? ;-)
猜你喜欢
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 1970-01-01
相关资源
最近更新 更多