【发布时间】:2020-08-06 02:36:31
【问题描述】:
我想从另一个 GeoPanda 数据框中更新 GeoPanda 数据框中的值以用于选择列。它们都有一个共同的键,称为“几何”。
例如
df1 = pd.DataFrame([["X",1,1,0],
["Y",0,1,0],
["Z",0,0,0],
["Y",0,0,0]],columns=["geometry","Nonprofit","Business", "Education"])
df2 = pd.DataFrame([["Y",1,1],
["Z",1,1]],columns=["geometry","Non", "Edu"])
按照这个answer我做了以下步骤:
df1 = df1.set_index('geometry')
df2 = df2.set_index('geometry')
list_1 = ['Nonprofit', 'Education']
list_2 = ['Non', 'Edu']
df1[list_1].update(df2[list_2])
这会导致错误的结果而没有任何警告。我该如何解决这个问题?
注意事项:
一次更新一列 (df1['Nonprofit'].update(df2['Non'])) 将产生正确的结果。
为简单起见,将 GeoPandas 中的几何线串替换为一个字符。
【问题讨论】:
-
检查你的熊猫版本
-
我使用的是熊猫版本 '1.0.3'。谢谢
-
那是因为你没有使用当前版本的熊猫。链接中的答案说使用当前版本的熊猫时会出现警告。
-
我认为这个问题与列表中传递的多个列标签有关。当我使用 df1['Nonprofit'].update(df2['Non']) 我得到了正确的答案。我在传递 df1[list_1].update(df2[list_2]) 中的列名列表时遇到问题。谢谢