2017-07-17 490 views
0

欄中將值使用:基於其他列

import pandas as pd 
import numpy as np 
a = pd.read_csv('Bvitoria_argos.csv', na_values=[' -99999.0']) 

數據幀是類似的東西:

HS Tp 
3.0 12.0 
2.0 11.3 
nan 19.2 
nan 5.9 
5.6 7.0 

的目的是基於「在'TP'列替換值「HS」的價值觀,並得到類似的東西:

HS Tp 
3.0 12.0 
2.0 11.3 
nan nan 
nan nan 
5.6 7.0 

我試圖用這個,但它不工作:

c.loc[c.HS==np.nan,'Tp']=np.nan 

要更具體說明什麼時候,'HS''列''Tp''列中的nan值需要爲nan。如果有人能幫忙,會很感激。

回答

1

使用isnull()

df.loc[df['HS'].isnull(),'Tp'] = np.nan 
+0

謝謝,這個工程。爲什麼我的代碼c.loc [c.HS == np.nan,'Tp'] = np.nan沒有工作? –

+0

np.nan == np.nan解析爲False,你需要使用isnull() –

+0

謝謝(:只是多一個問題,如果我需要使用這個,但值與更高或更低,例如,如果我想如果HS高於5,那麼在Tp中設置nan如何編寫? –

0

你可以np.where使用。如果cond是一個布爾陣列,並且A和B是數組,則

C = np.where(cond, A, B) 

限定℃到等於A,其中cond是True,並且B,其中cond是假。

Compare Indexing where condition.