DataFrame:从一列的字符串字典到两列的浮点数 {'latitude': '34.04', 'longitude': '-118.24'}

DataFrame: from string dictionnary in one columns to floats in two column {'latitude': '34.04', 'longitude': '-118.24'}

我有一个 pandas DataFrame df,其中有一列 latlng。 此列中的行的格式为

{'latitude': '34.041005', 'longitude': '-118.249569'}.

为了能够向地图添加标记(使用 folium librairie),我想创建两列 'latitude'longitude,在本例中它们分别包含 34.041005-118.249569.


编辑: 设法让它与第一步一起工作: df['latlng'] = df['latlng'].map(eval)

这应该可以为您完成工作:

df['blatlong'].apply(pd.Series)

您可以使用 pd.json_normalize 来避免 apply 成本高昂:

In [684]: df_out = pd.json_normalize(df.latlong)
In [686]: df_out
Out[686]: 
    latitude    longitude
0  34.041005  -118.249569
1  30.041005  -120.249569

然后您可以将这些列连接回 df,如下所示:

pd.concat([df.drop('latlong', axis=1), df_out], axis=1)

以下应该有效:

df['latitude']=[i['latitude'] for i in eval(df['latlong'])]
df['longtitude']=[i['longtitude'] for i in eval(df['longtitude'])]

试试这个:

df_new = pd.DataFrame(df['latlng'].values.tolist(), index=df.index)