【问题标题】:Error while trying to append data to columns in Python尝试将数据附加到 Python 中的列时出错
【发布时间】:2020-01-18 11:02:44
【问题描述】:

我正在尝试反转地理编码数据,为此我有以下查询

import overpy
import pandas as pd
import numpy as np

df = pd.read_csv("/home/runner/sample.csv")
df.sort_values(by=['cvdt35_timestamp_s'],inplace=True)

api= overpy.Overpass()
box = 0.0005
queries = []
results = []
df['Name']=''
df['Highway'] =''

with open("sample.csv") as f:
  for row in df.index:
    query = 'way('+str(df.gps_lat_dd.iloc[row]-box)+','+str(df.gps_lon_dd.iloc[row]-box)+','+str(df.gps_lat_dd.iloc[row]+box)+','+str(df.gps_lon_dd.iloc[row]+box)+') ["highway"]; (._;>;); out body;'
    queries.append(query)
  for query in queries :
    result = api.query(query)
    results.append(result)
  for result in results:
    for way in result.ways:
        name = way.tags.get("name", "n/a")
        df['Name'].append(name)
    for way in result.ways:  
        df['Highway']= way.tags.get("highway", "n/a")


我正在尝试将每个结果附加到数据框中的新列,但上面的代码抛出错误。

我尝试过使用

for way in result.ways:
        df['Name'] = way.tags.get("name", "n/a")

它给了我所有的行作为“韦斯特兰大道”,结果应该如下

Brookville Road
Brookville Road
Brookville Road
Brookville Road
Brookville Road
Brookville Road
Brookville Road
Brookville Road
Brookville Road
Brookville Road
Westland Avenue

谁能帮我解决这个问题

【问题讨论】:

    标签: python pandas dataframe append reverse-geocoding


    【解决方案1】:

    我在一些示例数据上尝试了您的代码并在这样做时遇到了这个错误:

    TypeError: 无法连接“”类型的对象;只要 pd.Series、pd.DataFrame 和 pd.Panel(已弃用)obj 有效

    Series.append() 只接受 Series 对象。

    改用df['Name'].append(pd.Series(name))

    或者更好的是,创建这些名称的列表,将列表转换为Series,然后附加它。

    【讨论】:

    • 请投票并接受答案,这样问题就可以结束了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多