【问题标题】:How do you assign a row to a Panda data frame while iterating?迭代时如何为 Panda 数据框分配一行?
【发布时间】:2020-10-03 04:55:13
【问题描述】:
import reverse_geocoder as rg
import pandas as pd
for i in range(len(df_train)) : 
    coordinate = (df_train.loc[i, "Lat"], df_train.loc[i, "Long_"]) 
    geo_dict=rg.get(coordinate)
    geo_code.loc[i,:]=pd.DataFrame.from_dict(geo_dict,orient='index').T
  # geo_code=pd.DataFrame.from_dict(geo_dict,orient='index').T
    print (geo_code)

我想以 geo_code DF 结束,从每个反向地理编码查找中继续一行。我的任务

geo_code.loc[i,:]

不起作用。

【问题讨论】:

  • 请张贴df_train的样本,不要作为图片,不看数据就无法提供帮助

标签: python pandas loops variable-assignment


【解决方案1】:
enter code here`import reverse_geocoder as rg
import pandas as pd
geo_code=pd.DataFrame()
for i in range(len(df_train)) : 
    coordinate = (df_train.loc[i, "Lat"], df_train.loc[i, "Long_"]) 
    geo_dict=rg.get(coordinate)  
    geo_code=geo_code.append(pd.DataFrame.from_dict(geo_dict,orient='index').T)

【讨论】:

    【解决方案2】:

    您正在尝试在创建数据框之前访问数据框索引

    df_train = pd.DataFrame({"Lat": [36.778259,28.644800],"Long_":[-119.417931,77.216721]})
    for i in range(len(df_train)):
        coordinate = (df_train.loc[i, "Lat"], df_train.loc[i, "Long_"])
        geo_dict=rg.get(coordinate)
        value_array = np.array([[el] for el in geo_dict.values()]).reshape(1,-1)
        if i == 0:
            geo_code = pd.DataFrame(value_array, columns=geo_dict.keys())
        else:
            d1 = pd.DataFrame(value_array, columns=geo_dict.keys())
            geo_code = pd.concat([geo_code, d1], ignore_index=True)  
    

    打印(地理代码)

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 2019-09-29
      • 1970-01-01
      • 2019-02-24
      • 2017-01-04
      • 1970-01-01
      相关资源
      最近更新 更多