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)
我有一个 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)