【问题标题】:Pandas df how to show where df['col']+df['col2'] don't matchPandas df 如何显示 df['col']+df['col2'] 不匹配的位置
【发布时间】:2019-07-23 13:49:23
【问题描述】:

我有一个 df 有两列 df['A']df['B']df['C']) 是时间戳)。 A 的数据是用户名,B 是数字。

我想提取用户名+数字值 A) 相同和 B) 不同的位置,即显示用户名具有 >1(不同)数字的位置。

这可能吗?

我使用set(df.A+df.B) 进行了测试以获取唯一值,但对此我无能为力。

编辑:

我需要更清楚地说明这一点......

我正在描绘一个循环,我从索引0 开始,在df['A']df['B'] 中获取它的值,然后我遍历索引n+1...第n 行寻找索引@ 上的匹配项987654332@的df['B'],如果匹配存在则检查索引df['A']是否匹配df['A'],如果不匹配则打印两个索引的数据,然后移动到索引n+1并重复过程。这有意义吗?

所以这基本上只会打印来自数据框 df 的数据,其中用户名字符串(在 df['A'] 中)与不同的数字(df['B'] 值)相关联。

【问题讨论】:

  • df.loc[df['A'] == df['B']]df.loc[df['A'] != df['B']] ?但是,当您提到获得“唯一值”时,这是否正是您想要的还不清楚。如果没有,您能否发布示例数据和预期结果?
  • 为了更好地说明您想要什么,您应该包含示例数据和预期输出。
  • pandas.DataFrame.duplicatedpandas.DataFrame.groupby 和/或nunique 有很多关系,但我不知道您拥有什么或想要什么。考虑提供minimal reproducible example
  • ('foo', '11')('foo1', '1') 是有效的 (username, number) 对吗?如果是这样,添加它们会产生相同的值,'foo11',但大概这些对应该被认为是不同的。因此,添加通常不是确定唯一性的正确(最强大、无错误)的方法。
  • @Brendan - 我的更新有意义吗?

标签: python python-3.x pandas


【解决方案1】:

您可以通过以下方式查找两列的重复组合:

df[df[['A', 'B']].duplicated()]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 2019-10-29
    • 2022-01-01
    • 2018-08-20
    • 2021-09-07
    • 2022-01-09
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多