[英]Appending API results in the existing CSV file in a right format (New header + API results)
目前,我正在處理50,000行CSV表。 這是我在API中輸入的示例CSV表:
然后,API處理每一行中的地址,並給我相應的坐標(緯度和經度)
我的問題是我需要在現有表中附加這些新的標題和值。 (在行中說[22])
這是下面的我的Python查詢:
import requests
import json
import pandas as pd
import numpy as np
import csv
import sys
from geocodio import GeocodioClient
import re
client = GeocodioClient('506be11563600404eb83151e40bb0f11ef06f3b')
# Input - CSV
df=pd.read_csv(r"C:\users\testu\documents\travis_50000_melissa_joined_dropna - Copy2.csv",delimiter=',', na_values="nan")
with open(r"C:\users\testu\documents\travis_50000_melissa_joined_dropna - Copy2.csv", 'a', newline='') as fp:
fieldnames = ["latitude","longitude","coordinates"]
writer = csv.DictWriter(fp, fieldnames=fieldnames)
writer.writeheader()
# Iterating requests for each row
for row in df.itertuples():
output = client.geocode(str(row.addressline1) + ', ' + str(row.city) + ', ' + str(row.state) + ', ' + str(row.postalcode)).coords
cord = '(' + str(output[0]) + ', '+ str(output[1]) + ')'
writer.writerow({'latitude': output[0], 'longitude': output[1], 'coordinates': cord})
print(output)
如下圖所示,我將在新行中獲取API結果。
如何獲得所需的CSV輸出,如下圖所示?
注意:請不要熊貓! 我需要使用CSVwriter解決此問題。
您需要將三個新字段追加到每一行 ,因此需要將row
與這三個新字段合並。 這在Pandas中會有些混亂,因此請允許我使用csv
模塊重新定義pd.read_csv()
:
import csv
with open("test.csv") as in_file, open("test_out.csv", "w") as out_file:
csv_in = csv.DictReader(in_file, delimiter=",")
headers = csv_in.fieldnames + ["lat", "lon", "coord"]
csv_out = csv.DictWriter(out_file, fieldnames=headers)
csv_out.writeheader()
for row in csv_in:
output = client.geocode("{}, {}, {}, {}".format(
row["addressline1"],
row["city"],
row["state"],
row["postalcode"]
))
row["lat"] = output[0]
row["lon"] = output[1]
row["coord"] = "({} {})".format(output[0], output[1])
csv_out.writerow(row)
我強烈建議您創建一個新文件,而不僅僅是覆蓋舊文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.