【问题标题】:Pandas filter values from multiple columnsPandas 过滤来自多列的值
【发布时间】:2019-07-25 08:25:09
【问题描述】:

我想找到具有不同产品的 id。 在这里,答案是 id-1,2 和 4,因为它有不同的产品。 答案不是 id 3 因为 id 3 有类似的产品。

如何在 Python 中编写程序来过滤结果?

   id prod
0   1    a
1   1    l
2   2    l
3   2    a
4   3    a
5   3    a
6   3    a
7   4    l
8   4    a

【问题讨论】:

  • 请在您的帖子中使用代码标签以文本格式发布您的示例,不建议将其作为图像发布。

标签: pandas filter multiple-columns


【解决方案1】:

IIUC,你可以使用:

df.loc[~df.duplicated(['id','prod'],keep=False),'id']
#or df.drop_duplicates(keep=False)['id']

0    1
1    1
2    2
3    2
7    4
8    4

【讨论】:

  • @RavinderSingh13 df.groupby('id')['prod'].apply(lambda x: x.nunique()==len(x)) 怎么样?
  • 感谢 TON 在这里让我知道,当我运行您建议的代码时,我收到类似 TypeError: 'Series' object is not callable 的错误,任何想法,我正在学习 Pandas,如果在这里遗漏了一些东西,很抱歉。
  • @RavinderSingh13 试试这个df.loc[df.groupby('id')['prod'].transform(lambda x: x.nunique()==len(x)),'id'] 但同样,如果示例是失败的:有一组 3 和 2 个重复项
  • 很抱歉我仍然收到错误TypeError: 'Series' object is not callableno 我没有在这里更改任何 df 的值。我会尝试发布一次这个问题。非常感谢您的帮助:)
  • @RavinderSingh13 对我来说很好用。 :( 好的,没问题。:)
猜你喜欢
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
  • 2021-09-12
  • 2018-03-21
  • 1970-01-01
  • 2019-07-26
相关资源
最近更新 更多