Анализ данных в Твиттере - Извлечение дескрипторов и хэштегов - PullRequest
1 голос
/ 26 марта 2020

У меня есть df с твитами и датой. Я хотел бы создать функцию, которая извлекает дескрипторы @ и преобразует их в соответствии со словарем (например, '@CityofCTAlerts': 'Кейптаун') и помещает значение словаря (IE Кейптаун) в новый столбец. Затем мне нужно извлечь все хэштеги в отдельный столбец.

Это то, что я пробовал:

def extract_municipality_hashtags(df):
    twitter_df['municipality'] = twitter_df['Tweets'].map(lambda x: (i[1:] for i in x.split() if i.startswith('@')))
    twitter_df['municipality'] = twitter_df['municipality'].map(mun_dict)
    twitter_df['hashtags']=twitter_df['Tweets'].str.findall(r'#.*?(?=\s|$)')
    return df

Затем я запускаю функцию:

extract_municipality_hashtags(twitter_df.copy())

Но получаю "привязанный метод NDFrame.copy of"

Мне нужно, чтобы он возвратил правильный фрейм данных

Вот оригинальный фрейм данных:

twitter_url = 'https://raw.githubusercontent.com/Explore-AI/Public-Data/master/Data/twitter_nov_2019.csv'
twitter_df = pd.read_csv(twitter_url)
twitter_df.head()

Используемый словарь:

mun_dict = {
    '@CityofCTAlerts' : 'Cape Town',
    '@CityPowerJhb' : 'Johannesburg',
    '@eThekwiniM' : 'eThekwini' ,
    '@EMMInfo' : 'Ekurhuleni',
    '@centlecutility' : 'Mangaung',
    '@NMBmunicipality' : 'Nelson Mandela Bay',
    '@CityTshwane' : 'Tshwane'
}

1 Ответ

0 голосов
/ 27 марта 2020

Хорошо, похоже, я в конце концов понял это:

def extract_municipality_hashtags(df):
    twitter_df['municipality'] = twitter_df['Tweets'].map(lambda x: (i[1:] for i in x.split() if i.startswith('@')))
    twitter_df['municipality'] = twitter_df['municipality'].map(mun_dict)
    twitter_df['hashtags']=twitter_df['Tweets'].str.lower().str.findall(r'#.*?(?=\s|$)')
    fun_4 = twitter_df[['Tweets','Date','municipality','hashtags']]
    fun_4['hashtags'] = fun_4['hashtags'].apply(lambda y: np.nan if len(y)==0 else y)
    return fun_4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...