isnull
및 notnull
을 사용하여 &
으로 연결된 조건으로 부울 마스크를 만듭니다.
mask = raw_data['a'].notnull() & raw_data['b'].isnull()
raw_data['b'] = raw_data['b'].mask(mask, 1)
또는 :
raw_data.loc[mask, 'b'] = 1
또는 :
mask
,
loc
또는
numpy.where
와 -
그런 다음 1
를 추가 더 가능한 해결책이다
샘플 : 행으로 처리 axis=1
와 apply
이 필요합니다 (더 많은 데이터가 있다면 정말 느린) 사용자 정의 기능을 사용하려면
이
가 :
이
raw_data = pd.DataFrame({
'a': [1,np.nan, np.nan],
'b': [np.nan, np.nan,2]
})
print (raw_data)
a b
0 1.0 NaN
1 NaN NaN
2 NaN 2.0
mask = raw_data['a'].notnull() & raw_data['b'].isnull()
print (mask)
0 True
1 False
2 False
dtype: bool
raw_data.loc[mask, 'b'] = 1
print (raw_data)
a b
0 1.0 1.0
1 NaN NaN
2 NaN 2.0
편집
def condition(x):
if pd.notnull(x.a) and pd.isnull(x.b):
return 1
else:
return x.b
raw_data['b'] = raw_data.apply(condition, axis=1)
print (raw_data)
a b
0 1.0 1.0
1 NaN NaN
2 NaN 2.0
작동 할 수있는 경우 낸피 랑 잘 지냈어. –