基于另一个具有不同行数的数据帧列向数据帧添加新列

2024-09-28 03:11:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python应用于数据科学的新手,我有点困在一个(简单的)问题上

我有两个数据框:数据(存储上次马德里选举结果)和地图(将马德里市的数据存储为GeoJSON)

我想代表一张有选举结果的地图。我可以做到这一点,但由于我无法将来自map_municipios的正确地理信息放入数据框中,市政名称和信息不正常(即马德里市政显示另一个名称和结果)

我的两个数据帧具有以下信息:

data.info()

 #   Column                      Non-Null Count  Dtype  
 ---  ------                      --------------  -----  
 0   cpro                        179 non-null    int64  
 1   cmun                        179 non-null    int64  
 2   municipio                   179 non-null    object 
 ......

 map_municipios.info()

 16  cpro         164 non-null    object  
 17  cmun         164 non-null    object  
 18  dc           164 non-null    object  
 19  codigo_post  164 non-null    object  
 20  geometry     182 non-null    geometry

我的所有项目信息都在以下链接中: MadridElectionsFull Repo

我正在尝试使用以下列正确修复两个数据帧之间的信息:“cpro”和“cmun”。如果cpro和cmun在两个数据帧中相等,则必须将“几何体”列值添加到数据帧中的新“几何体”列中

搜索信息我尝试了以下操作:

data['geometry'] = np.where(
  (data['cpro'].equals(map_municipios['cpro'])) & 
  (data['cmun'].equals(map_municipios['cmun'])), 
   map_municipios['geometry'], 0
)

它返回一个错误,因为len(数据)=len(市地图)(179!=182)。len(数据)是马德里地区城市的正确数量

我尝试在np.where(…)之前使用pd.Series,但它创建了由零组成的数据['geometry']列,而不是坐标值

问题:是否有任何简单的方法可以获取我的map_市政['geometry']列并以正确的顺序将其提供给data dataframe(尽管有len个不同的值,但额外的值将被忽略)

任何提示、链接等都将不胜感激

先谢谢你


Tags: 数据名称信息mapdatalenobject地图

热门问题