我需要根据使用另一列数据的Web服务的结果来填充 Dataframe 中的一列。我正在使用的Web服务一次只允许3个并发请求。我想知道在使用panda Dataframe 应用时是否可以控制这一点()方法,或者我是否应该寻找不同的替代方法(例如,“遍历/循环” Dataframe 记录,每次三条)。
import pandas as pd
import requests
# Function to call a web service
# Return NonActive for non active and Active for active
def get_status(x):
status_web_service = r'http://www.example.com/?id=' + x
response = requests.get(status_web_service)
return response.text()
# Main body starts here
df = pd.DataFrame([['1', 'Jane'], ['2', 'John']] , columns=['id', 'Name'])
df['Status'] = df['id'].apply(get_status)
我的预期输出( Dataframe 的内容)如下所示:
id, Name, Status
1, Jane, Active
2, John, NonActive
欢迎提出任何建议,无论是以这种方式解决问题,还是通过更好的替代方案。
- 谢谢-谢谢
1条答案
按热度按时间1aaf6o9v1#
假设.apply()在进入下一行之前解析每一行,我不认为您会遇到并发请求的问题。但是,如果Web服务对请求频率有限制,您可能需要考虑在apply函数中放置一个小的睡眠计时器(例如time.sleep())。