数据处理问题:在dataframe中以已知某列映射出新列

比如:已知dataframe中某一列数据有A,B,C,D,.....这些数据,现在要求新建一列,使得其中的数据是:与A,B 同一行的是 “甲”,以C,D同一行的是“乙”,其余字母对应“其他”,这样该如何编程?

A       甲

A       甲

......

B       乙

D      其他

 

 

这是改进版

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(['A','B','C','D','E','F','G'], columns=['col_1'])
>>> data = np.copy(df.col_1.values)
>>> data = np.where(~np.isin(data, np.array(['A','B','C','D'])), '其他', data)
>>> data = np.where(np.isin(data, np.array(['A','B'])), '甲', data)
>>> data = np.where(np.isin(data, np.array(['C','D'])), '乙', data)
>>> df['col_2'] = data
>>> df
  col_1 col_2
0     A     甲
1     B     甲
2     C     乙
3     D     乙
4     E    其他
5     F    其他
6     G    其他

 

>>> import pandas as pd
>>> df = pd.DataFrame(['A','B','C','D','E'], columns=['col_1'])
>>> df
  col_1
0     A
1     B
2     C
3     D
4     E
>>> df['col_2'] = None
>>> df.loc[(df.col_1=='A')|(df.col_1=='B'), 'col_2'] = '甲'
>>> df.loc[(df.col_1=='C')|(df.col_1=='D'), 'col_2'] = '乙'
>>> df.loc[(df.col_1!='A')&(df.col_1!='B')&(df.col_1!='C')&(df.col_1!='D'), 'col_2'] = '其他'
>>> df
  col_1 col_2
0     A     甲
1     B     甲
2     C     乙
3     D     乙
4     E    其他