Python: UserWarning: Dieses Muster hat match-Gruppen. Tatsächlich erhalten die Gruppen verwenden, str.Extrakt
Ich habe einen dataframe und ich versuche, string, wo auf der Spalte enthalten, die einen string
Df sieht aus wie
member_id,event_path,event_time,event_duration
30595,"2016-03-30 12:27:33",yandex.ru/,1
30595,"2016-03-30 12:31:42",yandex.ru/,0
30595,"2016-03-30 12:31:43",yandex.ru/search/?lr=10738&msid=22901.25826.1459330364.89548&text=%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B+%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD&suggest_reqid=168542624144922467267026838391360&csg=3381%2C3938%2C2%2C3%2C1%2C0%2C0,0
30595,"2016-03-30 12:31:44",yandex.ru/search/?lr=10738&msid=22901.25826.1459330364.89548&text=%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B+%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD&suggest_reqid=168542624144922467267026838391360&csg=3381%2C3938%2C2%2C3%2C1%2C0%2C0,0
30595,"2016-03-30 12:31:45",yandex.ru/search/?lr=10738&msid=22901.25826.1459330364.89548&text=%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B+%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD&suggest_reqid=168542624144922467267026838391360&csg=3381%2C3938%2C2%2C3%2C1%2C0%2C0,0
30595,"2016-03-30 12:31:46",yandex.ru/search/?lr=10738&msid=22901.25826.1459330364.89548&text=%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B+%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD&suggest_reqid=168542624144922467267026838391360&csg=3381%2C3938%2C2%2C3%2C1%2C0%2C0,0
30595,"2016-03-30 12:31:49",kinogo.co/,1
30595,"2016-03-30 12:32:11",kinogo.co/melodramy/,0
Und anderen df mit urls
url
003\.ru\/[a-zA-Z0-9-_%$#?.:+=|()]+\/mobilnyj_telefon_bq_phoenix
003\.ru\/[a-zA-Z0-9-_%$#?.:+=|()]+\/mobilnyj_telefon_fly_
003\.ru\/sonyxperia
003\.ru\/[a-zA-Z0-9-_%$#?.:+=|()]+\/mobilnye_telefony_smartfony
003\.ru\/[a-zA-Z0-9-_%$#?.:+=|()]+\/mobilnye_telefony_smartfony\/brands5D5Bbr_23
1click\.ru\/sonyxperia
1click\.ru\/[a-zA-Z0-9-_%$#?.:+=|()]+\/chasy-motorola
Benutze ich
urls = pd.read_csv('relevant_url1.csv', error_bad_lines=False)
substr = urls.url.values.tolist()
data = pd.read_csv('data_nts2.csv', error_bad_lines=False, chunksize=50000)
result = pd.DataFrame()
for i, df in enumerate(data):
res = df[df['event_time'].str.contains('|'.join(substr), regex=True)]
aber es mich zurückbringen
UserWarning: This pattern has match groups. To actually get the groups, use str.extract.
Wie kann ich das beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mindestens einer der regex-Muster in
urls
muss eine capturing-group.str.contains
gibt nur True oder False für jede Zeile indf['event_time']
--es nicht machen, verwenden Sie das Aufnahme-Gruppe. So, die
UserWarning
ist Sie alarmiertdass die regex nutzt eine capturing-group, aber das match wird nicht verwendet.
Wenn Sie möchten, entfernen Sie die
UserWarning
Sie finden konnten, und entfernen Sie die Aufnahme-Gruppe aus dem regex-Muster(s). Sie sind nicht in der regex-Muster, die Sie gebucht, doch Sie muss es in Ihrer aktuellen Datei. Suchen Sie für die Klammern außerhalb von Zeichenklassen.Alternativ können Sie unterdrücken diese Besondere UserWarning, indem Sie
bevor der Aufruf
str.contains
.Hier ist ein einfaches Beispiel, das veranschaulicht das problem (und Lösung):
Drucke
Entfernen der capturing group aus dem regex-Muster:
vermeidet die UserWarning.
Seit
regex=True
ist vorgesehen,sublist
wird als regulärer Ausdruck behandelt, die in Ihrem Fall enthält die Erfassung von Gruppen (strings in Klammern).Erhalten Sie die Warnung, denn wenn Sie wollen, um etwas zu erfassen, dann gibt es keine Verwendung von str.enthält (die gibt ein boolsches je nachdem, ob das zur Verfügung gestellt Muster ist enthalten in den string oder nicht)
Entweder die Flucht der Klammer-Blöcke oder verwenden Sie str.Extrakt, wenn Sie wirklich wollen, um etwas zu erfassen.