2017-04-03 44 views
2

我无法弄清楚python熊猫中是否有语句。python熊猫如果在列中的列中添加Y标志在新列中添加Y标志

我有一个数据帧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  

谢谢!

回答

2

使用map在您使用字典的get方法lambda功能,你可以传递一个默认值

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  
+0

工作精美 - 谢谢,你碰巧知道lambda的一个很好的文档(超越python文档吗?) – jeangelj

+0

@jeangelj没有超出自己的谷歌搜索。 – piRSquared

+0

不过谢谢 – jeangelj

2

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 
+0

我完全不明白。 OP说他们得到了'C'。但是没有一些额外的工作就没有办法获得。所以我认为他们的意思是预期的产出。无论哪种方式,'fillna('')'或'fillna('C')'都非常有用。 – piRSquared

+0

@piRSquared,我想'C' - 是'replace()'函数的结果 – MaxU

+0

哇!我刚醒来,我没有理由错过这个:-)。 – piRSquared