You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中获取符合条件的唯一值——以筛选亚马逊相关卖家为例

在Pandas中实现类似SQL LIKE的模糊匹配(获取亚马逊相关卖家的唯一值)

首先,先明确你的场景:你有如下的DataFrame:

import pandas as pd
df_amazon = pd.DataFrame ({ 
    'order_no':[1, 2, 3], 
    'category':['Books', 'Toys', 'Books'], 
    'seller':['Amazon.com', 'AZ Toys', 'amazon'] 
})

你想要获取seller列中所有与亚马逊相关的唯一值,对应SQL里的SELECT seller FROM df_amazon WHERE LOWER(seller) LIKE 'amazon%',但之前的尝试遇到了问题,我来帮你解决。

你之前代码的问题所在

你尝试的df_amazon.seller.str.lower().contains('amazon')报错,是因为str.lower()返回的是一个Series对象,而contains()是Pandas字符串方法,必须通过str访问器调用——你漏掉了第二个str!正确的链式调用应该是df_amazon.seller.str.lower().str.contains('amazon')。

几种正确的实现方式

方式一:修正你的代码,获取唯一值

先通过不区分大小写的匹配筛选出所有亚马逊相关的卖家,再提取唯一值:

# 筛选匹配记录,提取seller列并去重
amazon_sellers = df_amazon.loc[
    df_amazon.seller.str.lower().str.contains('amazon'), 
    'seller'
].unique()
print(amazon_sellers)
# 输出:array(['Amazon.com', 'amazon'], dtype=object)

方式二:更简洁的忽略大小写匹配(模拟SQL LIKE 'amazon%')

如果要精确匹配以amazon开头的字符串(和你的SQL语句逻辑完全一致),可以用str.startswith(),或者直接给str.contains()加case=False和正则表达式,省去手动转小写的步骤:

# 用startswith实现以amazon开头(不区分大小写)
amazon_sellers = df_amazon.loc[
    df_amazon.seller.str.lower().str.startswith('amazon'), 
    'seller'
].unique()

# 更简洁:用contains+正则+case=False,直接忽略大小写匹配开头
amazon_sellers = df_amazon.loc[
    df_amazon.seller.str.contains(r'^amazon', case=False), 
    'seller'
].unique()

这里的^amazon是正则表达式,表示以amazon开头,case=False让匹配不区分大小写,完美对应你SQL里的LOWER(seller) LIKE 'amazon%'逻辑。

方式三:保留DataFrame格式的去重结果

如果你需要的是DataFrame格式而不是数组,可以用drop_duplicates()代替unique():

amazon_sellers_df = df_amazon[
    df_amazon.seller.str.contains(r'^amazon', case=False)
][['seller']].drop_duplicates()

关键知识点总结

  • Pandas的字符串操作必须通过str访问器调用,链式操作时每个字符串方法都要加上str.前缀
  • str.contains()支持正则表达式,灵活度很高,case=False参数可以直接实现不区分大小写的匹配
  • 如果要模拟SQL的LIKE 'xxx%',用str.startswith()或者正则^xxx会比单纯的contains()更精准,避免匹配到中间包含目标字符串的无关记录

内容的提问来源于stack exchange,提问作者IamWarmduscher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 09:12:33