[英]Delete rows with certain conditions in Python
我正在使用适用于Python的Twitter搜索API对Twitter消息的特定关键字进行研究。
现在,我有一个很大的CSV文件,其中包含包含此关键字以及用户名中包含关键字的邮件。 因此,这些消息与关键字无关,关键字恰好在用户名中。
例:
我的csv中有一个错误的行: @Koningsbruggen发推文:@CGCommunicatie你们在“关键字”中吗?
我的csv中有不正确的行:@“ KEYWORD” _lady发推文:@rvanbommel是,没关系
如何使用Python代码删除后一行? 我有一个包含12万行的csv,因此最好自动删除这些不正确的行。
如果您的输入文件是消息的逐行列表:
ATamsterdam_lady tweeted: ATrvanbommel ja dikke vlokken
ATKoningsbruggen tweeted: ATCGCommunicatie zitten jullie in Amsterdam?
ATJustoRasta tweeted: febovers ... AT Leidseplein - Amsterdam Centrum t.co/KCUCzj2dWq
AT7Ash_bash tweeted: #HENNY AND AMSTERDAM TONIGHT
然后,您可以使用以下Python代码:
input_file = 'twitter.txt'
output_file = 'result.txt'
keyword = 'Amsterdam'
with open(input_file) as f:
lines = f.readlines()
for line in lines:
message = line.split('tweeted: ')[1]
if keyword.lower() in message.lower():
with open(output_file, 'a') as myfile:
myfile.write(line)
生成的输出文件包含逐行文本,仅在“消息”部分包含“阿姆斯特丹”:
ATKoningsbruggen tweeted: ATCGCommunicatie zitten jullie in Amsterdam?
ATJustoRasta tweeted: febovers ... AT Leidseplein - Amsterdam Centrum t.co/KCUCzj2dWq
AT7Ash_bash tweeted: #HENNY AND AMSTERDAM TONIGHT
如果您将推文加载到pandas数据框中,则可以非常轻松,快速地对其进行过滤:
In [11]:
df = pd.DataFrame({'tweet':['@Koningsbruggen tweeted: @CGCommunicatie are you guys in "KEYWORD"?', '@"KEYWORD"_lady tweeted: @rvanbommel yes thats okay']})
df
Out[11]:
tweet
0 @Koningsbruggen tweeted: @CGCommunicatie are y...
1 @"KEYWORD"_lady tweeted: @rvanbommel yes thats...
我们可以调用向量化str
方法来split
推文并使用contains
对其进行过滤:
In [25]:
df[df.tweet.str.split('tweeted:').str[1].str.contains('KEYWORD')]
Out[25]:
tweet
0 @Koningsbruggen tweeted: @CGCommunicatie are y...
有很多方法可以将数据加载到熊猫中: http : //pandas.pydata.org/pandas-docs/stable/io.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.