pandas dataframe应用lambda if else erro

时间:2018-02-16 03:45:51

标签: python pandas lambda

我正在尝试在pandas df上应用带有if-else条件的lambda df如下所示:

col1 col2 col3 col4 <---column names
None None None col4 <---column values in str
col1 None None None
None col2 None None



df_twitter_archive_master[['col1','col2','col3','col4']].apply(lambda x: x=0 if x=='None' else x=1)
基本上,它应该取代&#39;无&#39;值为0,其他为1 但我一直收到这个错误

df_twitter_archive_master[['col1','col2','col3','col4']].apply(lambda x: x=0 if x=='None' else x=1)

SyntaxError: invalid syntax

^在x = 1

之下 我在做错了什么? ?

2 个答案:

答案 0 :(得分:5)

IIUC

df.replace('None',np.nan).notnull().astype(int)
Out[31]: 
   col1  col2  col3  col4
0     0     0     0     1
1     1     0     0     0
2     0     1     0     0

基于你的lambda方法

df.applymap(lambda x: 0 if x=='None' else 1)
Out[33]: 
   col1  col2  col3  col4
0     0     0     0     1
1     1     0     0     0
2     0     1     0     0

答案 1 :(得分:5)

让我们试试:

(df != 'None').astype(int)

输出:

   col1  col2  col3  col4
0     0     0     0     1
1     1     0     0     0
2     0     1     0     0