Skip to main content
 首页 » 编程设计

Python pandas .map 仅保存最后一次编辑

2024年08月16日47zengkefu

我正在尝试使用 pandas .map 来编辑数据集,代码如下:

df['Region'] = df['Region'].astype('category') 
reg = df['Region'] 
cats = reg.cat.categories 
ncats = len(cats) 
n = len(os) 
 
north = (...) 
south = (...) 
center = (...) 
islands = (...) 
 
d1 = {cats[i]:'South' for i in range(ncats) if cats[i] in south} 
d2 = {cats[i]:'North' for i in range(ncats) if cats[i] in north} 
d3 = {cats[i]:'Center' for i in range(ncats) if cats[i] in center} 
d4 = {cats[i]:'Islands' for i in range(ncats) if cats[i] in islands} 
 
df['Reg_cat'] = df['Region'].map(d1) 
df['Reg_cat'] = df['Region'].map(d2) 
df['Reg_cat'] = df['Region'].map(d3) 
df['Reg_cat'] = df['Region'].map(d4) 
df['Reg_cat'] = df['Reg_cat'].astype('category') 
df['Reg_cat'].cat.categories 
df['Reg_cat'] 

该代码确实有效,但它只应用最后一个 .map 请求。所以在这种情况下它适用于 d4。如果 d1 是最后一个,它应用那个。我做错了什么?

请您参考如下方法:

每个连续的 map 调用都会用 NaN 替换不在映射器内部的所有内容。

尝试构建一个字典并传递它。

m = {'North' : north, 'South' : south, 'Center' : center, 'Islands', islands}     
d = {v2 : k for k, v in m.items() for v2 in v} 
 
df['Reg_cat'] = df['Reg_cat'].map(d) 

注意:

  • 你不需要reg
  • 你不需要猫
  • 你不需要ncats
  • 您也(毫不奇怪)不需要 n,无论 that 是什么