Python 基于其他字段中的值自动填充列

Python 基于其他字段中的值自动填充列,python,pandas,where,Python,Pandas,Where,我正在尝试根据另一列中的值填充一个单独的列。对于下面的df,我想在['code']='A'时用['Assign']填充['C1',在['code']='B'时用'C2'填充。我喜欢填写的所有其他内容np.nan 作为pd进口熊猫 d = ({ 'Place' : ['Home','Away','Work','Home','Shops','Park','Cafe','Shops','Away','Home','Cafe','Work','Park'], 'Code' : ['A

我正在尝试根据另一列中的值填充一个单独的列。对于下面的
df
,我想在
['code']='A'
时用
['Assign']
填充
['C1'
,在['code']='B'时用
'C2'填充。我喜欢填写的所有其他内容
np.nan

作为pd进口熊猫

d = ({
    'Place' : ['Home','Away','Work','Home','Shops','Park','Cafe','Shops','Away','Home','Cafe','Work','Park'],  
    'Code' : ['A','A','A','A','C','B','B','C','A','A','B','A','B'],            
     })

df = pd.DataFrame(data=d)
我已尝试此操作,但值不正确

df['Assign'] = df['Code'].where((df['Code'] == 'A'), ['C1'])
df['Assign'] = df['Code'].where((df['Code'] == 'B'), ['C2'])
我希望输出以下内容:

    Place Code Assign
0    Home    A     C1
1    Away    A     C1
2    Work    A     C1
3    Home    A     C1
4   Shops    C     
5    Park    B     C2
6    Cafe    B     C2
7   Shops    C     
8    Away    A     C1
9    Home    A     C1
10   Cafe    B     C2
11   Work    A     C1
12   Park    B     C2
您可以使用:

根据最近的变化,解决方案是:

df['Assign'] = np.where(df['Code']=='A','C1',np.where(df['Code']=='B','C2',''))
如果在
df['code']=='C'
时需要空值,请使用:

df['Assign'] = np.where(df['Code']=='A','C1',np.where(df['Code']=='B','C2',None))

None是字符串的空值。

map
与字典
get
方法和默认值一起使用

m = lambda x: dict(A='C1', B='C2').get(x, '')
df.assign(Assign=df.Code.map(m))

    Place Code Assign
0    Home    A     C1
1    Away    A     C1
2    Work    A     C1
3    Home    A     C1
4   Shops    C       
5    Park    B     C2
6    Cafe    B     C2
7   Shops    C       
8    Away    A     C1
9    Home    A     C1
10   Cafe    B     C2
11   Work    A     C1
12   Park    B     C2

fillna

m = dict(A='C1', B='C2')
df.assign(Assign=df.Code.map(m).fillna(''))

code
是否可能既不包含
A
也不包含
B
m = dict(A='C1', B='C2')
df.assign(Assign=df.Code.map(m).fillna(''))