根据一列中的多个字符串选择行

时间:2020-07-31 15:31:45

标签: pandas string contains

在Pandas我有一个包含时尚商品销售的订单数据库,需要计算某些特定商品的退货率。我想选择商品名称中包含“ christmas”,“ xmas”或“ gift”的所有行,但是当我尝试多个关键字时,出现错误。 有没有办法选择多个字符串名称? 非常感谢! 这是我的(摘要)数据帧:

inp = [{'sales':200, 'returns':100, 'item_name':'cool gift red'}, {'sales':150, 'returns':100, 'item_name':'giftset deluxe'},{'sales':1000, 'returns':100, 'item_name':'xmas sweater'}, {'sales':100, 'returns':100, 'item_name':'ugly christmas jumper BILLY'},
       {'sales':100, 'returns':100, 'item_name':'blue sweater'},{'sales':100, 'returns':100, 'item_name':'ugly christmas jumper JOE'},
       {'sales':100, 'returns':100, 'item_name':'orange cardigan'}
    ] 
df = pd.DataFrame(inp) 
gift=df[df.item_name.str.contains('xmas')]
gift```  

1 个答案:

答案 0 :(得分:0)

DataFrame中的[]运算符是一种“神奇”的功能非常强大的工具。但是有时候程序会稍微冗长一些,从而使运行速度更快。

也就是说,[].loc[]可以采用多种条件:

礼物= df_q.loc [(condition1)| (条件2)| (条件3)]

您可以将|&~用于条件的任意组合。

如果条件是相等/比较,请确保将条件括在括号中,如

.loc[(df.A == 1) & (df.B < 100)]

二进制运算符&|优先于等号/不等号,因此不使用括号将等同于

(df.A == (1 & df.B)) < 100