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 作为索引获取列中的列表值

Excel VBA:从一列中的字符串中查找和删除多个值

根据另一列中的值从一列中减去值(SQL)

从pandas DataFrame中另一列中的位置给定的字符串列中提取字符[重复]

使用pandas创建稀疏矩阵,并使用来自.dat文件的其他两列的索引[x,y]的.dat文件的一列中的值填充它