Python 我有一个输入csv,我想要输出csv。输入生成一些URL,我想将它们附加到现有的数据帧中
我有一个带有一些关键字的CSV文件。通过这些关键字,我使用SERPAPI生成了10-15个URL。我想将URL附加到关于该关键字的列URL。对于一个关键字,有多个URL。如果我无法将URL添加到相应的关键字,则会使用不同的URL复制关键字 test.csv文件Python 我有一个输入csv,我想要输出csv。输入生成一些URL,我想将它们附加到现有的数据帧中,python,pandas,csv,Python,Pandas,Csv,我有一个带有一些关键字的CSV文件。通过这些关键字,我使用SERPAPI生成了10-15个URL。我想将URL附加到关于该关键字的列URL。对于一个关键字,有多个URL。如果我无法将URL添加到相应的关键字,则会使用不同的URL复制关键字 test.csv文件 keyword value cost electrician 15 3.6 plumber 12 5.9 keyw
keyword value cost
electrician 15 3.6
plumber 12 5.9
keyword value cost url
electrician 15 3.6 www.ex1.com
electrician 15 3.6 www.ex2.com
electrician 15 3.6 www.ex3.com
.
.
.
.
plumber 12 5.9 www.ee.com
plumber 12 5.9 www.ee2.com
.
.
我希望这样的结果输出到.csv文件
keyword value cost
electrician 15 3.6
plumber 12 5.9
keyword value cost url
electrician 15 3.6 www.ex1.com
electrician 15 3.6 www.ex2.com
electrician 15 3.6 www.ex3.com
.
.
.
.
plumber 12 5.9 www.ee.com
plumber 12 5.9 www.ee2.com
.
.
这是我正在使用的代码;我已经尝试了熊猫,但它只附加了最后一个网址
df = pd.read_csv("test.csv")
col = df['keywords']
for k in col:
print(k)
client_params = {
"q": k,
"google_domain": "google.co.uk",
"location": "United+Kingdom",
"hl": "en",
"gl": "uk",
"num": "15",
"serp_api_key": "********************",
}
client = GoogleSearchResults(client_params)
json_results = client.get_json()
#print(json_results)
#print(type(json_results))
results = pd.DataFrame()
print(results)
for title in json_results['organic_results']:
print(title['link'])
df['URL'] = title['link']
results = results.append(df).reset_index(drop = True)
# df.to_csv('output.csv',index=False, header= False)
results.to_csv('output.csv',index=False)
但这是我得到的结果:
keyword value cost urls
electrician 15 3.6 www.ex.xom
plumber 12 5.9 www.ex.xom
这是因为循环中有
结果
。在每次迭代之后,它将覆盖上一次,从而将最后一次写入作为最后一次迭代。您需要在进入循环之前初始化它,然后才能继续附加到它。比如:
注意:你可能不知道;我不想包含api密钥,所以我从您的答案中删除了它。您需要输入api_密钥
import pandas as pd
from lib.google_search_results import GoogleSearchResults
df = pd.read_csv("test.csv")
results = pd.DataFrame()
for idx, row in df.iterrows():
k = row['keyword']
value = row['value']
cost = row['cost']
client_params = {
"q": k,
"google_domain": "google.co.uk",
"location": "United+Kingdom",
"hl": "en",
"gl": "uk",
"num": "15",
"serp_api_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
}
client = GoogleSearchResults(client_params)
json_results = client.get_json()
for title in json_results['organic_results']:
print(title['link'])
title = title['link']
temp_df = pd.DataFrame([[k, value, cost, title]], columns=['keyword', 'value','cost','URL'])
results = results.append(temp_df).reset_index(drop = True)
results.to_csv('output.csv',index=False)
这是因为循环中有
结果
。在每次迭代之后,它将覆盖上一次,从而将最后一次写入作为最后一次迭代。您需要在进入循环之前初始化它,然后才能继续附加到它。比如:
注意:你可能不知道;我不想包含api密钥,所以我从您的答案中删除了它。您需要输入api_密钥
import pandas as pd
from lib.google_search_results import GoogleSearchResults
df = pd.read_csv("test.csv")
results = pd.DataFrame()
for idx, row in df.iterrows():
k = row['keyword']
value = row['value']
cost = row['cost']
client_params = {
"q": k,
"google_domain": "google.co.uk",
"location": "United+Kingdom",
"hl": "en",
"gl": "uk",
"num": "15",
"serp_api_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
}
client = GoogleSearchResults(client_params)
json_results = client.get_json()
for title in json_results['organic_results']:
print(title['link'])
title = title['link']
temp_df = pd.DataFrame([[k, value, cost, title]], columns=['keyword', 'value','cost','URL'])
results = results.append(temp_df).reset_index(drop = True)
results.to_csv('output.csv',index=False)
什么是
k
?你介意生成一个完整的结构吗?在你的代码k
之前没有定义,因此你的代码是不可复制的。我已经添加了整个代码。首先欢迎使用。在这里,人们很乐意互相帮助,但如果你有一本关于和的书,那就太好了。我想问你的问题,你使用的是df.loc[df['Related Terms']==k]
,但是k
之前没有定义。什么是k
?你介意生成一个完整的结构吗?在你的代码k
之前没有定义,因此你的代码是不可复制的。我已经添加了整个代码。首先欢迎使用。在这里,人们很乐意互相帮助,但如果你有一本关于和的书,那就太好了。我想问你的问题,你使用的是df.loc[df['Related Terms']==k]
,但是k
以前没有定义过。同样的问题,它会将最后一个结果附加到关键字中。如果看不到整个代码,很难调试。我不知道什么是df
,或者json\u结果。我所能提供的只是一般的想法,因为您的代码是不可复制的。问题是,您没有附加到新的数据帧,您只是在覆盖it@DharmveerSingh您应该将代码添加到问题中,而不是此答案中。我们无法接受此编辑。我有其他列,我也想添加它们,但当我放入另一个循环时,我的程序变得非常慢。其他列是什么?它在test.csv中吗?同样的问题是,它会将最后一个结果附加到关键字中。如果不查看整个代码,很难进行调试。我不知道什么是df
,或者json\u结果。我所能提供的只是一般的想法,因为您的代码是不可复制的。问题是,您没有附加到新的数据帧,您只是在覆盖it@DharmveerSingh您应该将代码添加到问题中,而不是此答案中。我们无法接受此编辑。我有其他列,我也想添加它们,但当我放入另一个循环时,我的程序变得非常慢。其他列是什么?它在test.csv中吗?