【问题标题】:Convert GeoSeries to regular float type?将 GeoSeries 转换为常规浮点类型?
【发布时间】:2018-05-31 20:44:43
【问题描述】:

我正在尝试将包含 numpy float64 数据类型的 GeoDataFrame 对象的列转换为常规浮点类型的数组。我想知道是否有一种方法可以在不遍历整个列的情况下做到这一点?

trajectory_features['points'][fid] = gdf[key]

这是我必须要做的,但是当我尝试将它序列化为 JSON 时,它会给出错误,即 numpy 数据类型 float64 不是 JSON 可序列化的。 gdf 是 GeoDataFrame,trajectory_features 是二维字典。

【问题讨论】:

  • 顺便说一句,如果您要将其转换为 GeoJSON(而不是某些自定义 json 格式),则可以使用内置的 to_json 方法
  • 遗憾的是它正在转换为自定义 JSON 格式,所以我不能在这种情况下使用 to_json @joris

标签: python python-2.7 numpy geopandas


【解决方案1】:

您可以使用tolist 方法,它将数组或Series 转换为python 列表,然后将值本身也转换为常规的python 浮点数:

trajectory_features['points'][fid] = gdf[key].tolist()

查看ndarray.tolist() docs(上面使用的pandas.Series.tolist()方法等价)

【讨论】:

    【解决方案2】:

    使用 numpy.ndarray.tolist(trajectory_features) 将您的 numpy 数组转换为包含您的浮点数的常规列表。

    【讨论】:

      【解决方案3】:

      感谢@Psy 的回答,我得以解决问题。

      我的代码:

      trajectory_features['points'][fid] = numpy.ndarray.tolist(gdf[key].values)
      

      【讨论】:

      • 短一点,简洁一点,你也可以gdf[key].tolist()
      • 似乎也可以,我更喜欢你的回答,因为它更容易理解。令人沮丧的是我自己没有想到这么简单的事情。如果您想将其发布为答案,我将接受它作为解决方案。 @joris
      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 2010-09-10
      • 1970-01-01
      • 2012-09-23
      相关资源
      最近更新 更多