나는 np.where를 좋아하지만 그걸 완전히 파악하지 못했습니다.np.where를 사용하지만 조건이 거짓 일 때 기존 값 유지
는import pandas as pd
import numpy as np
from numpy import nan as NA
DF = pd.DataFrame({'a' : [ 3, 0, 1, 0, 1, 14, 2, 0, 0, 0, 0],
'b' : [ 3, 0, 1, 0, 1, 14, 2, 0, 0, 0, 0],
'c' : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
'd' : [5, 1, 2 ,1, 1 ,22, 30, 1, 0, 0, 0]})
지금 내가하고 싶은 모든 행 값이 제로 일 때 NaN의 값으로 0 값을 대체 할 수 있습니다 :
나는 dataframe 그것은 다음과 같습니다 말할 수 있습니다. 비판적으로 모든 행 값이 0이 아닌 경우 다른 행의 값이 유지 되길 원합니다.
나는 이런 식으로 뭔가를 할 :
cols = ['a', 'b', 'c', 'd']
condition = (DF[cols] == 0).all(axis=1)
for col in cols:
DF[col] = np.where(condition, NA, ???)
내가 넣어 ??? 조건이 거짓이면 어떤 값을 넣을지 모르겠다는 것을 나타 내기 위해 이미 존재하는 것만 보존하려고합니다. np.where에서 가능합니까? 아니면 다른 기술을 사용해야합니까?
아마도 이것이 가장 좋은 방법은 사실이다 : 당신이 당신의 예를 변경,
DF[col]
와???
을 대체 할 수 있도록 riginal 문제는np.where
같은 broadcasting rules 같은 다른 배열 작업을 다음? "DF.loc [DF [(DF [cols] == 0) .all (axis = 1)]. index, cols] = NA' –