我正在尝试使用 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 是什么
