Python 我有一个输入csv,我想要输出csv。输入生成一些URL,我想将它们附加到现有的数据帧中

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

我有一个带有一些关键字的CSV文件。通过这些关键字,我使用SERPAPI生成了10-15个URL。我想将URL附加到关于该关键字的列URL。对于一个关键字,有多个URL。如果我无法将URL添加到相应的关键字,则会使用不同的URL复制关键字

test.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
.
.
我希望这样的结果输出到.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中吗?