【问题标题】:checking for existence of a value in a Pandas dataframe column [duplicate]检查 Pandas 数据框列中是否存在值[重复]
【发布时间】:2020-12-31 13:45:08
【问题描述】:

我有一个小的数据框 df,我正在测试一些代码,然后在更大的集合上使用代码

  id  make   price
  21  Boss    300
  22    LG    400
  23    EE    500
  24  Orange  750

我正在尝试找到一种方法来确定在插入该值之前该值是否已存在于列中。

此代码 sn-p 有效

newval = 'EE'
for val in df.make:
    if val == newval:
        print(val)
    else:
        print('not the val')

然而,这个 sn-p 应该更清楚地识别数据帧的特定列中是否已经存在一个值,但它似乎不起作用,因为它打印“Available to add”,尽管“EE”已经存在于“制作”列。

newval = 'EE'
if newval in df.make:
    print('In there already')
else:
    print('Available to add')

如果我测试真假

exists = 'EE' in df.make
print(exists)

我得到 False,尽管 'EE' 显然已经在 'make' 列中

为什么我没有得到 True 和 'Available to add'

我确定我遗漏了一些非常简单但看不到的东西。有人能指出我正确的方向吗

【问题讨论】:

  • 您是否已经在列表中包含了所有新值?找到设置的差异比循环每个 newval 更容易
  • 我实际上正在尝试测试一些逻辑以在 API 中的 Post 函数中使用,我可能会定期发送新记录并且不希望该过程允许重复记录..我想我可以看到你建议的意义,但也许我的用例有点具体
  • 是的。谢谢。里面有一些 BEN-YO 建议的解决方案
  • 我知道,你找到了解决方案很好,但我们应该避免保留重复的问题,请接受问题顶部显示的通知,以便将其标记为 dup

标签: pandas dataframe


【解决方案1】:

您的语句'EE' in df.make 正在搜索系列INDEX 中的字符串,这就是它返回False 的原因。如果你把它改成'EE' in df.make.values,那么它就是True。

【讨论】:

    【解决方案2】:

    更改为isin,然后更改为any

    exists =  df.make.isin(['EE']).any()
    

    【讨论】:

    • 谢谢。存在现在给了我一个真实的。我会在我的 if、else 语句中使用它来表现得也很好
    猜你喜欢
    • 2021-06-26
    • 1970-01-01
    • 2018-10-18
    • 2020-09-07
    • 2017-02-15
    • 2022-01-07
    • 1970-01-01
    • 2017-11-24
    • 2021-02-18
    相关资源
    最近更新 更多