DataFrame:从一列中的字符串字典到两列中的浮点数 'latitude': '34.04', 'longitude': '-118.24' [重复]
Posted
技术标签:
【中文标题】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' [duplicate]DataFrame:从一列中的字符串字典到两列中的浮点数 'latitude': '34.04', 'longitude': '-118.24' [重复] 【发布时间】:2021-01-11 13:02:58 【问题描述】:我有一个带有 latlng
列的 pandas DataFrame df
。
此列中的行具有格式
'latitude': '34.041005', 'longitude': '-118.249569'
.
为了能够向地图添加标记(使用folium librairie),我想创建两列'latitude'
和longitude
,在此示例中分别包含34.041005
和-118.249569
。
编辑: 设法让它与这第一步一起工作: df['latlng'] = df['latlng'].map(eval)
【问题讨论】:
【参考方案1】:您可以使用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)
【讨论】:
pd.json_normalize(df.latlong)
返回AttributeError: 'str' object has no attribute 'values'
@DeepNet 它应该可以工作。您能否分享一个您尝试运行它的数据框示例?【参考方案2】:
以下应该有效:
df['latitude']=[i['latitude'] for i in eval(df['latlong'])]
df['longtitude']=[i['longtitude'] for i in eval(df['longtitude'])]
【讨论】:
TypeError: string indices must be integers
我猜这是因为您的 latlong 列是字符串而不是字典。我在代码中添加了eval,请再检查一遍
是的,谢谢,我已经对我的原始帖子进行了编辑【参考方案3】:
这应该可以为您完成工作:
df['blatlong'].apply(pd.Series)
【讨论】:
感谢您的回答,但它不会将字典分成两列名称'latitude'
和'longitude'
,它只是创建了一个熊猫系列...
查看原帖中的编辑【参考方案4】:
试试这个:
df_new = pd.DataFrame(df['latlng'].values.tolist(), index=df.index)
【讨论】:
感谢您的回答,但它不会将字典分成两列名称'latitude'
和'longitude'
,它只是创建了一个熊猫系列...
查看原帖中的编辑以上是关于DataFrame:从一列中的字符串字典到两列中的浮点数 'latitude': '34.04', 'longitude': '-118.24' [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用同一 Dataframe 中另一列的 int 作为索引获取列中的列表值