如何在创建 geojson 时处理 NaN 值
How to handling NaN values while creating a geojson
我正在尝试从 DataFrame
创建一个 .geojson
文件。我有这个 table:
long lat elev
0 40.392987 -3.652552 0.0
1 41.471062 2.041841 0.0
2 41.410016 2.175180 0.0
3 NaN NaN NaN
这是创建.geojson
文件的函数
def data2geojson(df):
features = []
df.apply(lambda X: features.append(
geojson.Feature(geometry=geojson.Point((X["lat"],
X["long"],
X["elev"])),
properties={"country": "Spain"})), axis=1)
with open('map.geojson', 'w') as fp:
geojson.dump(geojson.FeatureCollection(features), fp, sort_keys=True)
如果我只 select 前三列但抛出下一个错误,则此代码有效:
Out of range float values are not JSON compliant: nan
我不知道如何处理这个比 try:
和 except ValueError:
但是抛出异常会破坏函数,如果有更多值则无法继续...我该如何处理??
这个错误是因为 JSON 不接受 NaN 值(顺便说一下,在 Python 中被认为是 float
)。在将其转换为 geojson 之前,您需要在输入数据框中编辑这些值。
根据您想对 NaN 值执行的操作,您可以使用以下方法修复此错误:
- 您可以按照以下说明将它们全部删除。一旦行的至少一个值是 NaN:
,这将删除该行
df = df.dropna()
- 您可以用任何值替换它们。以下将任何 NaN 替换为
0
:
df = df.fillna(value=0)
我正在尝试从 DataFrame
创建一个 .geojson
文件。我有这个 table:
long lat elev
0 40.392987 -3.652552 0.0
1 41.471062 2.041841 0.0
2 41.410016 2.175180 0.0
3 NaN NaN NaN
这是创建.geojson
文件的函数
def data2geojson(df):
features = []
df.apply(lambda X: features.append(
geojson.Feature(geometry=geojson.Point((X["lat"],
X["long"],
X["elev"])),
properties={"country": "Spain"})), axis=1)
with open('map.geojson', 'w') as fp:
geojson.dump(geojson.FeatureCollection(features), fp, sort_keys=True)
如果我只 select 前三列但抛出下一个错误,则此代码有效:
Out of range float values are not JSON compliant: nan
我不知道如何处理这个比 try:
和 except ValueError:
但是抛出异常会破坏函数,如果有更多值则无法继续...我该如何处理??
这个错误是因为 JSON 不接受 NaN 值(顺便说一下,在 Python 中被认为是 float
)。在将其转换为 geojson 之前,您需要在输入数据框中编辑这些值。
根据您想对 NaN 值执行的操作,您可以使用以下方法修复此错误:
- 您可以按照以下说明将它们全部删除。一旦行的至少一个值是 NaN: ,这将删除该行
df = df.dropna()
- 您可以用任何值替换它们。以下将任何 NaN 替换为
0
:
df = df.fillna(value=0)