有没有一种方法可以使用单值地理序列将列添加到geopandas数据框中?

时间:2019-06-01 17:45:29

标签: python-3.x geopandas

我正尝试在Geopandas(0.4.0)的地理数据框中添加一列,其中包含来自地理系列的单个值(点),以用于进一步的计算。

但是,在简单地创建新列并直接分配地理序列之后,我注意到新列中充满了NaN。

如果我使用整形对象本身,则会收到以下错误消息: “ AssertionError:新值的形状必须与管理器形状兼容”

1 个答案:

答案 0 :(得分:0)

(geo)pandas的神奇之处在于它可以自动对齐索引上的数据。因此,它将单个值系列与数据框的索引对齐。最多只能有一场比赛。如果要为新列分配常量值,请使用标量。

举个例子(而不是我提供的可复制示例):

import pandas

df = pandas.DataFrame({'A': [0, 1, 2], 'B': [3, 4, 5]}, index=list('abc'))
s = pandas.Series([6], index=[0])

print(df.assign(C=s))

我们得到:

   A  B   C
a  0  3 NaN
b  1  4 NaN
c  2  5 NaN

这是因为s的索引和df的索引不匹配。如果只有一场比赛(自len(s) == 1起),您将得到:

s = pandas.Series([6], index=['b'])

print(df.assign(C=s))
   A  B   C
a  0  3 NaN
b  1  4 6.0
c  2  5 NaN

但这不是您想要的,因此您应该只使用标量:

print(df.assign(C=6))
   A  B  C
a  0  3  6
b  1  4  6
c  2  5  6