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(''))