【发布时间】:2016-04-25 15:09:59
【问题描述】:
继续我在堆栈中的最后一个问题searching matching string pattern from dataframe column in python pandas
假设我有一个数据框
name genre
satya |ACTION|DRAMA|IC|
satya |COMEDY|DRAMA|SOCIAL|MUSIC|
abc |DRAMA|ACTION|BIOPIC|
xyz |ACTION||ROMANCE|DARMA|
def |ACTION|SPORT|COMEDY|IC|
ghj |IC|ACTIONDRAMA|NOACTION|
从我上一个问题的答案来看,我可以搜索任何一种类型(前 IC)如果独立存在于流派列中,而不是作为任何其他流派字符串值(MUSIC 或 BIOPIC)的一部分。
现在我想查找 ACTION 和 DRAMA 是否都出现在流派列中,但不一定按特定顺序出现,并且不是字符串的一部分,而是单独出现。
所以我需要输出行[1,3,4]中的行
name genre
satya |ACTION|DRAMA|IC| # both adjacently present
#row 2 will not come # as only DRAMA present not ACTION
abc |DRAMA|ACTION|BIOPIC| ### both adjacently present in diff. order
xyz |ACTION||ROMANCE|DARMA| ### both present not adjacent
##row 5 should not present as DRAMA is not here
## row 6 should not come as both are not present individually(but present as one string part)
我尝试了类似的东西
x = df[df['gen'].str.contains('\|ACTION\|DRAMA\|')]
### got only Row 1 (ACTION and DRAMA in adjacent and in order ACTION->DRAMA)
请有人建议可以在此处遵循/添加的内容,以便我可以在此处获得所需的内容。
【问题讨论】:
-
x = df[df['gen'].str.contains(r'(?s)^(?=.*\bACTION\b)(?=.*\bDRAMA\b)')] -
如果出现动作和戏剧,您想返回整行吗?
-
或者只是检查它们是否刚刚出现在行中?
-
@JanLeeYu- 想要将行返回到另一个数据框。
-
ghi怎么样?真的是ACTIONDRAMA还是ACTION|DRAMA?