将一个数据帧中的多个列值替换为经受公共键列的另一个数据帧的值

问题描述 投票:0回答:1

我想从另一个GeoPanda数据框中为选定的列更新GeoPanda数据框中的值。他们两个都有一个称为“ geometry”的通用密钥。

例如

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"])  

enter image description here

遵循此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])

这将导致错误的结果,而不会发出任何警告。我该如何解决?

enter image description here

注意:

一次更新一列(df1 ['Nonprofit']。update(df2 ['Non']))将产生正确的结果。

为简单起见,用字符替换了GeoPandas的几何线串。

我想从另一个GeoPanda数据框中为选定的列更新GeoPanda数据框中的值。他们两个都有一个共同的密钥,称为“几何”。例如df1 = pd.DataFrame([[“ X”,1,...

pandas geopandas
1个回答
0
投票

[DataFrame.update仅更新具有相同名称的列!

© www.soinside.com 2019 - 2024. All rights reserved.