【发布时间】:2019-06-10 13:21:59
【问题描述】:
假设你有一些学生
students = [ ['Jack', 34, 'Sydeny'] ,
['Riti', 30, 'Delhi' ] ,
['Aadi', 16, 'New York'] ]
dfObj = pd.DataFrame(students, columns = ['Name', 'Age', 'City'])
现在您会收到这样的系列:
s = pd.Series(['Riti', 30, 'Delhi'], index=['Name', 'Age', 'City'])
我现在可以使用.loc 来过滤如下条件:
filtered_dfObj = dfObj.loc[(dfObj['Name'] == s['Name']) & (dfObj['Age'] == s['Age'])]
filtered_dfObj = filtered_dfObj.loc[filtered_dfObj['City'] == s['City']]
但如果我有很多列,过滤器代码会增长得非常快。所以最好有s.isin(dfObj)这样的选项
5 个答案后更新:这些都是很好的答案 - 谢谢!我还没有在不同的方法之间进行任何速度测试。我个人选择this solution,因为它在列选择方面最灵活(如果需要的话)。
【问题讨论】:
-
感谢您的快速回复@AlexandreB。不幸的是,这看起来并不乐观,因为我想检查该系列的内容是否存在于
bObj行中。重复列没有错误。 -
我认为 df.equals(s) 可能有用.. ?
标签: python pandas dataframe series