python在列表的列中添加单词,在新列中添加Y标志
我不知道python中的语句是否有效 我有一个数据帧dfpython在列表的列中添加单词,在新列中添加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
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文档之外?)