在Pandas中的多个列中使用NaN值

时间:2017-11-06 22:44:53

标签: python pandas nan

我有多个不同行数和相同列数的数据集。 我想在每列中找到Nan值,例如考虑这两个数据集:

dataset1 :            dataset2:
a  b                  a    b
1  10                 2    11
2  9                  3    12
3  8                  4    13
4  nan                nan  14
5  nan                nan  15
6  nan                nan  16

我想在数据集a和b中找到一个nan值: 如果它出现在列b中,则删除所有具有nan值的行。如果它出现在a列中,则用0填充该值。

这是我的代码段:

a=pd.notnull(data['a'].values.any())
b= pd.notnull((data[b'].values.any()))
if a:
     data = data.dropna(subset=['a'])
if b:
     data[['a']] = data[['a']].fillna(value=0)

无法正常工作。

2 个答案:

答案 0 :(得分:3)

你只需要没有控制流的fillna和dropna

data = data.dropna(subset=['b']).fillna(0)

答案 1 :(得分:2)

将你的病情传递给词典

df=df.fillna({'a':0,'b':np.nan}).dropna()

你这里不需要'b'

df=df.fillna({'a':0}).dropna()

编辑:

df.fillna({'a':0}).dropna()
Out[1319]: 
     a   b
0  2.0  11
1  3.0  12
2  4.0  13
3  0.0  14
4  0.0  15
5  0.0  16