我有一个包含如下系列的数据框:
0 CollgCr
1 Veenker
2 CollgCr
3 Crawfor
4 NoRidge
5 Mitchel
6 Somerst
7 NWAmes
8 OldTown
9 BrkSide
基于该系列,我想通过对它们进行分组来创建一个新的专栏(功能)。
例如,如果数据是 CollgCr 或 Veenker,那么新列中的值将是“Middle”
我尝试使用下面的代码
df_full['NeighborGrp'] = "Upper"
df_full['NeighborGrp'].loc[df_full["Neighborhood"] == "CollgCr"] = "Middle"
df_full['NeighborGrp'].loc[df_full["Neighborhood"] == ["Mitchel", "OldTown", "BrkSide", "Sawyer", "NAmes", "IDOTRR",
"MeadowV", "Edwards", "NPkVill", "BrDale", "SWISU", "Blueste"]] = "Lower"
第一行和第二行运行良好,但第三行返回错误“ValueError: Arrays were different lengths”
padas 中是否有任何特殊语法允许我像这样基于多值条件创建新列?
谢谢
请您参考如下方法:
m = ['CollgCr', 'Veenker']
l = ["Mitchel", "OldTown", "BrkSide", "Sawyer", "NAmes", "IDOTRR","MeadowV", "Edwards", "NPkVill", "BrDale", "SWISU", "Blueste"]
df['new_col'] = np.select([df.city.isin(l), df.city.isin(m)], ['lower', 'middle'], default='upper')
city new_col
0 CollgCr middle
1 Veenker middle
2 CollgCr middle
3 Crawfor upper
4 NoRidge upper
5 Mitchel lower
6 Somerst upper
7 NWAmes upper
8 OldTown lower
9 BrkSide lower
