Python 为API调用读取CSV的单个列

Python 为API调用读取CSV的单个列,python,json,api,csv,automation,Python,Json,Api,Csv,Automation,如何在python中完成这样的任务?我得到了一个CSV文件,其中包含一系列参数,比如“col”和“para”。所以,我想将“para”列中的所有参数作为一个数组循环,并将每个响应数据返回并写入CSV文件 上校 对位 返回 A. E B F C G 您需要的是DataFrame的apply()函数。此函数可以对一列的每个元素执行相同的操作 以下是您案例的示例: 将熊猫作为pd导入 导入请求 data=pd.read\u csv(“input\u file.csv”) url=”http://ap

如何在python中完成这样的任务?我得到了一个CSV文件,其中包含一系列参数,比如“col”和“para”。所以,我想将“para”列中的所有参数作为一个数组循环,并将每个响应数据返回并写入CSV文件

上校 对位 返回 A. E B F C G
您需要的是DataFrame的
apply()
函数。此函数可以对一列的每个元素执行相同的操作

以下是您案例的示例:

将熊猫作为pd导入
导入请求
data=pd.read\u csv(“input\u file.csv”)
url=”http://api.com/query?name={}"
data['return']=data['para'].apply(lambda x:requests.get(url.format(x)).text)
data.to_csv(“output_file.csv”,index=False)
有关更多过程,您可以定义一个函数来替换上面的
lambda
函数:

将熊猫作为pd导入
导入请求
导入json
def my_流程(第段):
url=”http://api.com/query?name={}格式(第6段)
尝试:
return_json=json.load(requests.get(url.text)
response=return_json['data'][0]['response']#获取第一个响应字符串
除:
response=“#为API调用没有正确结果的情况设置一个值
返回响应
data=pd.read\u csv(“input\u file.csv”)
数据['return']=数据['para']。应用(my_流程)
data.to_csv(“output_file.csv”,index=False)
in
11
12数据=pd.read\U csv(“input.csv”)
--->13数据['return']=数据['para'].应用(my_流程)
14
15.to_csv(“output_file.csv”,index=False)
应用中的~\Anaconda3\lib\site packages\pandas\core\series.py(self、func、convert\u dtype、args、**kwds)
3846其他:
3847 values=self.astype(object.values)
->3848 mapped=lib.map\u推断(值,f,convert=convert\u数据类型)
3849
3850如果len(映射)和isinstance(映射[0],系列):
熊猫\\u libs\lib.pyx在熊猫中。_libs.lib.map\u infere()
在my_过程中(第
6网址=”http://api.com/query?name={}格式(第6段)
7 return_json=json.load(requests.get(url.text)
---->8 response=return_json['data'][0]['response']#获取第一个响应字符串
9返回响应
10

它应该是哪种API?所以,我不需要循环每一种API?不,你不需要。你可以尝试上面的代码,这很好,因为我用了一个for循环来做这件事,我不认为它可以做同样的事情。[{“id”:1,“name”:“e”,“response”:“return e from api”}]如果我只想将“response”字段的字符串返回到csv,该怎么办?将“response”键的字符串值返回到csv中。可能会返回多个具有相同参数的响应,如何获取第一个响应及其字符串值
<ipython-input-29-77b593e201eb> in <module>
     11 
     12 data = pd.read_csv("input.csv")
---> 13 data['return'] = data['para'].apply(my_process)
     14 
     15 data.to_csv("output_file.csv",index=False)

~\Anaconda3\lib\site-packages\pandas\core\series.py in apply(self, func, convert_dtype, args, **kwds)
   3846             else:
   3847                 values = self.astype(object).values
-> 3848                 mapped = lib.map_infer(values, f, convert=convert_dtype)
   3849 
   3850         if len(mapped) and isinstance(mapped[0], Series):

pandas\_libs\lib.pyx in pandas._libs.lib.map_infer()

<ipython-input-29-77b593e201eb> in my_process(para)
      6     url = "http://api.com/query?name={}".format(para)
      7     return_json = json.loads(requests.get(url).text)
----> 8     response = return_json['data'][0]['response '] # get the first response string
      9     return response
     10