python在列表的列中添加单词,在新列中添加Y标志

python在列表的列中添加单词,在新列中添加Y标志,python,pandas,if-statement,filter,Python,Pandas,If Statement,Filter,我不知道python中的语句是否有效 我有一个数据帧df Category | Count A 45756 B 5857 C 57876 我创建一个列表,然后将其用作层次结构 list_s = {'A':'Y', 'B':'Y'} df['Flag'] = df['Category'].replace(list_s) 但我明白了 Category | Count | Flag A 45756 Y B

我不知道python中的语句是否有效

我有一个数据帧df

Category | Count
A           45756
B           5857
C           57876
我创建一个列表,然后将其用作层次结构

list_s = {'A':'Y',
'B':'Y'}
df['Flag'] = df['Category'].replace(list_s)
但我明白了

Category | Count   | Flag 
A           45756     Y
B           5857      Y
C           57876     C
而不是

Category | Count   | Flag 
A           45756     Y
B           5857      Y
C           57876     

谢谢大家!

使用
map
lambda
函数,在该函数中,您可以使用字典的
get
方法传递默认值

list_s = {'A':'Y', 'B':'Y'}
df['Flag'] = df['Category'].map(lambda x: list_s.get(x, ''))

print(df)

  Category  Count Flag
0        A  45756    Y
1        B   5857    Y
2        C  57876    

IIUC您可以这样做:

In [8]: df['Flag'] = df['Category'].map(list_s).fillna('')

In [9]: df
Out[9]:
  Category  Count Flag
0        A  45756    Y
1        B   5857    Y
2        C  57876

我不完全明白。OP说他们得到了
'C'
。但是没有额外的工作是不可能做到的。所以我认为他们的意思是,按预期产出。无论哪种方式,
fillna(“”)
fillna('C')
都非常有用。@piRSquared,我认为
C
-是
replace()
函数的结果哇!我刚刚醒来,我没有理由错过它:-)。工作得很好-谢谢,你知道一个很好的lambda文档吗(除了python文档之外?)