select 行基于一列中的多个字符串
select rows based on multiple strings in one column
在 Pandas 我有一个包含时尚商品销售的订单数据库,需要计算某些特定 items.I 的 return 率 select 所有包含的行'christmas'、'xmas' 或 'gift' 项名称,但当我尝试多个关键字时,我收到错误消息。
有没有办法 select 多个字符串名称?
非常感谢!
这是我的(总结的)数据框:
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```
DataFrame 中的 []
运算符是一个“神奇”且非常强大的工具。但有时程序会 运行 使用更冗长的代码更快。
也就是说,[]
和 .loc[]
可以接受多个条件:
礼物 = df_q.loc[(条件 1) | (条件 2) | (条件 3)]
您可以对任意条件组合使用 |
、&
和 ~
。
如果条件是 equality/comparison,请确保将条件括在括号中,如
.loc[(df.A == 1) & (df.B < 100)]
二元运算符 &
和 |
优先于 equalities/inequalities,因此不使用括号等同于
(df.A == (1 & df.B)) < 100
在 Pandas 我有一个包含时尚商品销售的订单数据库,需要计算某些特定 items.I 的 return 率 select 所有包含的行'christmas'、'xmas' 或 'gift' 项名称,但当我尝试多个关键字时,我收到错误消息。 有没有办法 select 多个字符串名称? 非常感谢! 这是我的(总结的)数据框:
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```
DataFrame 中的 []
运算符是一个“神奇”且非常强大的工具。但有时程序会 运行 使用更冗长的代码更快。
也就是说,[]
和 .loc[]
可以接受多个条件:
礼物 = df_q.loc[(条件 1) | (条件 2) | (条件 3)]
您可以对任意条件组合使用 |
、&
和 ~
。
如果条件是 equality/comparison,请确保将条件括在括号中,如
.loc[(df.A == 1) & (df.B < 100)]
二元运算符 &
和 |
优先于 equalities/inequalities,因此不使用括号等同于
(df.A == (1 & df.B)) < 100