gpt4 book ai didi

python : strange str. 包含行为

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:13 24 4
gpt4 key购买 nike

我有一个名为 df 的数据框 df = pd.read_csv('my.csv')

    CUSTOMER_MAILID                       EVENT_GENRE       EVENT_LANGUAGE  
0 000.tushar@gmail.com |ROMANCE| Hindi
1 000.tushar@gmail.com |DRAMA| TAMIL
2 satya@gmail.com |ROMANCE| Hindi
3 000.tushar@gmail.com |DRAMA| Hindi
4 sat@gmail.com |ACTION|ADVENTURE|SCI-FI| English
5 000.tushar@gmail.com |ACTION|ADVENTURE|COMEDY| English
6 fdvklf@gmail.com |ACTION| Hindi
7 asdar@gmail.com |DRAMA| Hindi
8 dfvkme@gmail.com |FANTASY|HORROR|ROMANCE| English
9 000.tushar@gmail.com |ACTION|ADVENTURE|THRILLER| English
10 king@gmail.com |DRAMA| Hindi
11 000.tushar@gmail.com |ROMANCE|THRILLER| KANNADA
12 000.tushar@gmail.com |DRAMA| Hindi
13 000.tushar@gmail.com |ACTION|ADVENTURE|DRAMA| English
14 iamher@gmail.com |ACTION|ADVENTURE|DRAMA| TELUGU
15 000.tushar@gmail.com |BIOPIC|DRAMA| Hindi
16 0007ayan@gmail.com |HORROR|THRILLER| Hindi
17 0007ayan@gmail.com |ACTION|COMEDY|THRILLER| ODIA
18 000.tushar@gmail.com |ACTION|ADVENTURE|SCI-FI| English
19 0007ayan@gmail.com |ROMANCE| Hindi

但是当我查询时,我发现在某种意义上存在一些差异,str.contains 没有返回预期的输出。

 d = df.query((df['EVENT_GENRE'].str.contains('|ROMANCE|')) & (df['EVENT_LANGUAGE'] == 'Hindi'))
d
Out[53]:
CUSTOMER_MAILID EVENT_GENRE EVENT_LANGUAGE
0 000.tushar@gmail.com |ROMANCE| Hindi
2 satya@gmail.com |ROMANCE| Hindi
3 000.tushar@gmail.com |DRAMA| Hindi
6 fdvklf@gmail.com |ACTION| Hindi
7 asdar@gmail.com |DRAMA| Hindi
10 king@gmail.com |DRAMA| Hindi
12 000.tushar@gmail.com |DRAMA| Hindi
15 000.tushar@gmail.com |BIOPIC|DRAMA| Hindi
16 0007ayan@gmail.com |HORROR|THRILLER| Hindi
19 0007ayan@gmail.com |ROMANCE| Hindi

如您所见,EVENT_GENRE 字段不包含“ROAMNCE”,但是当我没有“|”时前任。 '|浪漫|'到“浪漫”,我得到了预期的输出。

d = df.query((df['EVENT_GENRE'].str.contains('ROMANCE')) & (df['EVENT_LANGUAGE'] == 'Hindi'))

d
Out[55]:
CUSTOMER_MAILID EVENT_GENRE EVENT_LANGUAGE
0 000.tushar@gmail.com |ROMANCE| Hindi
2 satya@gmail.com |ROMANCE| Hindi
19 0007ayan@gmail.com |ROMANCE| Hindi

然后我用'|'尝试了不同的场景(发现奇怪的结果)和没有('|')(发现预期的结果)。

我只是好奇如果'|'符号对 str.contains() 方法有一些影响。我非常怀疑它的行为类似于“或”操作。 Bcoz 当我尝试使用

dd = df.query(df['EVENT_GENRE'].str.contains('FANTASY|HORROR'))

dd
Out[21]:
CUSTOMER_MAILID EVENT_GENRE EVENT_LANGUAGE
8 dfvkme@gmail.com |FANTASY|HORROR|ROMANCE| English
16 0007ayan@gmail.com |HORROR|THRILLER| Hindi

因为它似乎用“或”运算来处理 FANTASY 和 HORROR。***不确定

并使用 dd = df.query(df['EVENT_GENRE'].str.contains('|FANTASY|HORROR|')) 选择所有数据。

据我所知,在 strind 中所有包含在 '' 或 ""中的都仅被视为 char(\t、\r、\n 除外)。但我不知道逻辑运算符是否曾经以相同的方式工作(因为很多我在字符串中看到 & 的次数)。

谁能澄清一下。谢谢 Adv.

最佳答案

默认情况下,contains 将您的字符串视为正则表达式以匹配字符串。因此,您的 "|ROMANCE|" 被视为正则表达式。由于第一个和最后一个交替为空(即第一个 | 之前或最后一个之后没有任何内容),它可以匹配空字符串,因此它总是匹配。

您可以将 regex=False 参数传递给 contains 以强制它仅匹配您的文字字符串。

关于python : strange str. 包含行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35055806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com