我不确定该怎么问。我正在使用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并将其传递给我的请求网址。
我不确定我是否理解问题,但是查看控制台日志时,似乎print(value)
不在响应请求中,而在循环中。换句话说,在控制台日志中,我看到了所有已打印的ID,但仅看到一个http请求为空(可能是因为ID未正确传递给它)。
我正在使用云功能运行脚本。
答案 0 :(得分:2)
实际上,放弃使用Pandas库,而只是通过csv进行迭代
import csv
def api_request(request):
fs = gcsfs.GCSFileSystem(project=PROJECT)
with fs.open('gs://project.appspot.com/file.csv') as f:
reader = csv.reader(f)
next(reader, None) # SKIP HEADERS
for row in reader: # LOOP THROUGH GENERATOR (NOT PANDAS SERIES)
value = row[0] # SELECT FIRST COLUMN (ASSUMED ID)
response = requests.get(
REQUEST_URL + value,
headers={'accept': 'application/json', 'ClientToken': TOKEN }
)
json_response = response.json()
print(json_response)
答案 1 :(得分:1)
试试看:
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)
for value in df['ID']:
response = requests.get(
REQUEST_URL + value,
headers = {'accept': 'application/json', 'ClientToken': TOKEN }
)
json_response = response.json()
print(json_response)
如我的评论所述,您尚未遍历数据。您看到的只是带有换行符的字符串表示形式(这可能是您误认为循环的原因)。