다중 열 데이터 프레임이 있다고 가정하고 첫 번째 열이있는 경우 첫 번째 열을 가져오고 두 번째 열을 보면 폭포수 스타일 알고리즘을 구현하고자합니다 그렇지 않다면 세 번째 열의 값을 취하고 마지막 열에 누락 된 값이 기본값 (예 : 0)을 갖는지 확인합니다. 일련의 벡터 연산을 추가하는 방법이 있지만 (아래 참조) 더 많은 열로 확장하지는 않습니다. 물론 나는 (매우 unpythonic - 괜찮아?) 행을 중첩 루프와 함께 할 수있는 내가 임의의 길이의 폭포로도 확장이 문제에 대한 해결책을 기대하고팬더 데이터 프레임에서 여러 열의 폭포수 알고리즘 구성
frame = pd.DataFrame(np.arange(15).reshape((5,3)),index=['a','b','c','d','e'],columns=['X','Y', 'Z'])
#Make some missing values
frame['X'].ix[0:2] = None
frame['Y'].ix[1:4] = None
frame['Z'].ix[3:5] = None
#This is my kludgy waterfall for the three column case.
frame['Waterfall'] = frame['X'].fillna(0) + frame['Y'].fillna(0) * frame['X'].isnull() + frame['Z'].fillna(0) * (frame['X'].isnull() & frame['Y'].isnull())
. 그것이 더 위대한 Pythonic 일 수 있다면. 이상적으로는, 데이터 프레임을 인수로 사용하여 열 레이블의 정렬 된 목록을 취하여 원하는 값을 반환하는 함수가 이상적입니다.
도움 주셔서 감사합니다.
을하지만 일반적으로 우리 모든 열에서 채우기를 원하지 않으며 폭포 순서가 프레임 순서가되지 않습니다. 올바른 순서로 생성 된 서브 프레임에서 fillna를 사용 하시겠습니까? – BKay
대소 문자의 끝에'.fillna (0)'을 호출하십시오. 여기서 전체 행은 NaN입니다. 왜 그것이 올바른 순서로되지 않습니까? – TomAugspurger
어쩌면 OP가''combine_first''보다 감소를 원합니까? – Jeff