2017-06-18 85 views
1

以下一个新的列是一个子集的数据帧的:分配值,以基于其它列的值在熊猫

id words A B C D E 
1 new 1  1 
2 good 1 
3 star   1 
4 never     
5 final 

我要定义一个新的变量(称为FF)作为新的列,如果所有其他变量(列)的值都为“null”,则为其赋值1。新的数据帧会是这样的:

id words A B C D E FF 
1 new 1  1 
2 good 1 
3 star   1 
4 never      1     
5 final      1 

我如何使用python和Pandas做到这一点?谢谢。

回答

5

您可以定义应用逐行数据帧的功能:

def fill_if_nan(row): 
    if row[['A', 'B', 'C', 'D', 'E']].isnull().all(): 
     return 1 

    return None 

df['FF'] = df.apply(fill_if_nan, axis=1) 

或者更优雅的numpy的基础的解决方案:

df['FF'] = np.where(df[['A', 'B', 'C', 'D', 'E']].isnull().all(1), 1, np.nan) 
+0

谢谢。该程序无法识别空值。对于某些行,变量的所有值都为空,但FF变量不具有“1”。我想我需要将所有空格替换为空值。你有解决方案吗? – Mary

+0

如果你想用'nan'替换一个空格,你可以使用'df.replace(r'\ s +',np.nan,regex = True)''。看到这[问题](https://stackoverflow.com/questions/13445241/replacing-blank-values-white-space-with-nan-in-pandas)。 –

+0

我试过了,但是如果列中有几个单词并且它们之间有空格,它也会替换空值的单词,除了列“单词”之外我怎么能说。 – Mary