【发布时间】:2018-11-02 00:27:16
【问题描述】:
目前我正在处理 50,000 行 CSV 表。这是我在 API 中输入的示例 CSV 表:
我的意见
API 然后处理每一行中的地址并给我一个相应的坐标(纬度和经度)
我的问题是我需要在现有表中附加这些新的标题和值。 (在第[22]行说)
下面是我的 Python 查询:
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 来解决这个问题。
期望的输出
【问题讨论】:
-
“当前输出”实际上是写入 .csv 文件的内容,还是您的
print(output)语句中正在打印的内容?因为如果是后者,那只是打印语句中换行的神器 -
您必须重写整个
.csv,而不仅仅是追加新列。