我正尝试在Geopandas(0.4.0)的地理数据框中添加一列,其中包含来自地理系列的单个值(点),以用于进一步的计算。
但是,在简单地创建新列并直接分配地理序列之后,我注意到新列中充满了NaN。
如果我使用整形对象本身,则会收到以下错误消息: “ AssertionError:新值的形状必须与管理器形状兼容”
答案 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