猿问

根据其他两列的条件文本值在 pandas 中创建一个新列

如何根据其他两列的条件文本值在 pandas 中创建新列?


初始表 -


Specialty   Category  

Spec A      Cat A     

Spec A      Cat B     

Spec A      Cat C

Spec A      Cat D

Spec B      Cat A     

Spec B      Cat B     

Spec B      Cat C 

Spec B      Cat D    

条件逻辑 = Cat A 和 Cat D 未重命名为“其他” Cat B 和 Cat C 重命名为“其他” 专业没有变化。新列用于根据上述逻辑连接专业和类别。


该表将输出到 -


Specialty   Category  Specialty_group

Spec A      Cat A     Spec A Cat A       

Spec A      Cat B     Spec A Other

Spec A      Cat C     Spec A Other

Spec A      Cat D     Spec A Cat D 

Spec B      Cat A     Spec B Cat A

Spec B      Cat B     Spec B Other

Spec B      Cat C     Spec B Other

Spec B      Cat D     Spec B Cat D


慕容森
浏览 117回答 1
1回答

江户川乱折腾

# create a mask based on your logicmask = (df['Category'] == 'Cat A') | (df['Category'] == 'Cat D')# assign a values to a new column using loc and joindf.loc[mask, 'Specialty_group'] = df[mask].agg(' '.join, axis=1)# assign values to a column using loc with the opposite of your logicdf.loc[~mask, 'Specialty_group'] = df[~mask]['Specialty']+' Other'  Specialty Category Specialty_group0    Spec A    Cat A    Spec A Cat A1    Spec A    Cat B    Spec A Other2    Spec A    Cat C    Spec A Other3    Spec A    Cat D    Spec A Cat D4    Spec B    Cat A    Spec B Cat A5    Spec B    Cat B    Spec B Other6    Spec B    Cat C    Spec B Other7    Spec B    Cat D    Spec B Cat D
随时随地看视频慕课网APP

相关分类

Python
我要回答