2017-06-18 87 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