繁体   English   中英

如何使用python根据句子中的关键字从xlsx文件中过滤数据?

[英]How do I filter data from an xlsx file based on key words in a sentence using python?

我使用Twitter抓取工具抓取了一些在线数据。 我知道我可以使用excel轻松过滤此数据,并且确实将数据导出到xlsx。 但是,我想使用Python进行过滤。 我抓取了包含Hurricane Dorian数据。 另外,我想过滤所有不包含"Bahamas"一词的内容。 我该怎么做?

谢谢!

from twitterscraper import query_tweets
import datetime as dt
import pandas as pd

begin_date = dt.date(2019, 7, 1)
end_date = dt.date(2019, 9, 9)

limit = 1000
lang = 'english'

tweets = query_tweets('Hurricane Dorian', begindate = begin_date, enddate = end_date, limit = limit, lang = lang)

df = pd.DataFrame(t.__dict__ for t in tweets)

export_excel = df.to_excel (r'C:\Users\victo\Desktop\HurricaneData.xlsx', index = None, header=True)

您可以在熊猫中使用str函数进行过滤。 请参阅熊猫的索引帮助。 这是您发布的问题的特定答案(代码):

from twitterscraper import query_tweets 
import datetime as dt 
import pandas as pd

begin_date = dt.date(2019, 7, 1) 
end_date = dt.date(2019, 9, 9)

limit = 1000 
lang = 'english'

tweets = query_tweets(
    'Hurricane Dorian', 
    begindate = begin_date, 
    enddate = end_date, 
    limit = limit, 
    lang = lang
)

# Convert to dataframe
df = pd.DataFrame(t.__dict__ for t in tweets)

# make a boolean mask
filt = df['text'].str.contains('Bahamas')

# compare the lengths of the dataframes
print(df.shape)
print(df.loc[filt].shape)

您可以看到未过滤的df有340行。 将其限制为文本带有“巴哈马”的行,将其减少到55行。

(340,16)

(55,16)

要保留真实的内容,请使用过滤器将其重新分配:

df = df.loc[filt]

或者,如果您要保留原始原始数据,则可以将其分配给新的数据框。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM