如何在迭代时给熊猫数据框分配一行?

问题描述 投票:0回答:1
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,:]

不起作用。

python pandas loops variable-assignment
1个回答
0
投票
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)

0
投票

你试图在创建数据框架之前访问一个DataFrame索引

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)  

print(geo_code)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.