【发布时间】:2020-04-11 11:39:53
【问题描述】:
我不确定我应该如何问这个问题。我正在使用 panda 循环遍历一个 csv 文件(至少我是这么认为的)。当我遍历行时,我想从特定列传递一个值来为每一行运行一个 http 请求。
到目前为止,这是我的代码:
def api_request(request):
fs = gcsfs.GCSFileSystem(project=PROJECT)
with fs.open('gs://project.appspot.com/file.csv') as f:
df = pd.read_csv(f,)
value = df[['ID']].to_string(index=False)
print(value)
response = requests.get(REQUEST_URL + value,headers={'accept': 'application/json','ClientToken':TOKEN }
)
json_response = response.json()
print(json_response)
如您所见,我正在遍历 csv 文件以获取 ID 以将其传递给我的请求 url。
我不确定我是否理解该问题,但查看控制台日志似乎print(value) 在没有响应请求时处于循环中。换句话说,在控制台日志中,我看到了所有打印的 ID,但我只看到一个空的 http 请求(可能是因为 ID 未正确传递给它)。
我正在使用云函数运行我的脚本。
【问题讨论】:
-
你根本没有循环任何东西。你的意思是
for value in df['ID']: response = requests.get(...)?你从print(value)看到了什么? -
我想我误解了我的控制台日志输出。我看到所有值 (
df[['ID']]) 从我的 csv 文件中一个接一个地打印出来......就像我在循环浏览它一样。 -
.to_string(...)使它成为项目的字符串表示形式,但它实际上只是 每个 ID 的 一个 迭代。如果要一一处理,需要循环使用for。 -
df[['ID']].to_string(index=False)一次将整个列作为字符串提供给您。您需要对列进行索引或循环以获取各个数据元素 -
@Parfait 使用
csv模块会更简单吗?我很乐意举个例子。
标签: python python-3.x pandas google-cloud-functions