2017-07-17 98 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.