我有一个包含超过50,000条tweet的csv文件,我在Pandas中以DataFrame的形式打开
df = pd.read_csv('dataset_tweets.csv')
我的目标是分析推文的情绪,在继续之前,我需要对推文进行规范化。我已经为此定义了一个函数,并且我想将输出添加为数据帧的新列(例如Text_Normalized)。
然而,如果满足某些条件(例如,如果tweet不是用英语编写的),我可能还需要删除该行。
如何遍历数据帧,将"normalizer“函数应用于文本列,如果行不满足特定条件则将其删除,并最终添加一个文本规范化的新列?
发布于 2017-08-15 23:30:32
假设你有一些“文本归一化”功能:
def normalises_text(text):
....
return normalised_text
您可以将此“按行”应用到“text”列,并非常简单地将其放入一个新列中,如下所示:
df['normalised_text'] = df.text.apply(normalises_text)
要删除不符合某些条件的行,您需要一种在数据帧中定义条件的方法。
假设您定义了一个函数来识别文本是否为英语,并返回一个布尔值:
def is_text_english(text):
....
return text_is_english
然后像前面一样将其放入一列中:
df['text_is_english'] = df.text.apply(is_text_english)
然后,您可以按如下方式过滤数据帧:
filtered_df = df[df.text_is_english]
或者,假设你有一个专栏,其中说明了推文的语言,你可以这样做:
filtered_df = df[df.tweet_language == 'EN']
这里的关键点是apply函数:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html
https://stackoverflow.com/questions/45694517
复制相似问题