фильтрация панд по списку и отправка электронной почты - PullRequest
0 голосов
/ 11 октября 2018

У меня есть фрейм данных Pandas, как показано ниже: -

    Tweets
0   RT @cizzorz: THE CHILLER TRAP *TEMPLE RUN* OBS...
1   Disco Domination receives a change in order to...
2   It's time for the Week 3 #FallSkirmish Trials!...
3   Dance your way to victory in the new Disco Dom...
4   Patch v6.02 is available now with a return fro...
5   Downtime for patch v6.02 has begun. Find out a...
6   ?⛏️... soon
7   Launch into patch v6.02 Wednesday, October 10!...
8   Righteous Fury.\n\nThe Wukong and Dark Vanguar...
9   RT @wbgames: WB Games is happy to bring @Fortn...

У меня также есть список, как показано ниже: -

my_list = ['Launch', 'Dance', 'Issue']

Теперь я хочу отфильтровать строки, еслиесть совпадающее слово из my_list, получая всю строку и отправляя его в виде электронного письма или для расслабления.

Как будто я должен получить вывод, так как строка no состоит в том, что в нем есть слово Dance.

3   Dance your way to victory in the new Disco Dom..

Я попытался отфильтровать приведенный ниже код, но каждый раз он дает мне пустые значения

data[data['Tweets'].str.contains('my_list')]

Кроме того, я хочу отправлять сообщения электронной почты только в той же строке, что и тело, если у меня совпадают слова изсписок еще я не хочу.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Это будет сделано:

import pandas as pd
import numpy as np
from io import StringIO

s = '''
"RT @cizzorz: THE CHILLER TRAP *TEMPLE RUN* OBS..."
"Disco Domination receives a change in order to..."
"It's time for the Week 3 #FallSkirmish Trials!..."
"Dance your way to victory in the new Disco Dom..."
"Patch v6.02 is available now with a return fro..."
"Downtime for patch v6.02 has begun. Find out a..."
"?⛏️... soon"
"Launch into patch v6.02 Wednesday, October 10!..."
"Righteous Fury.\n\nThe Wukong and Dark Vanguar..."
"RT @wbgames: WB Games is happy to bring @Fortn...       plane     5         [20 , 12, 30]"
      '''

ss = StringIO(s)
df = pd.read_csv(ss, sep=r'\s+', names=['Data'])

my_list = ['Launch', 'Dance', 'Issue']

cond = df.Data.str.contains(my_list[0])

for x in my_list[1:]:
    cond = cond | df.Data.str.contains(x)

df[cond]
0 голосов
/ 11 октября 2018

Использование regex=True

Пример:

data[data['Tweets'].str.contains("|".join(my_list), regex=True)]
...