나는 팬더 데이터 프레임이 A과 B입니다.
데이터 프레임은 동일한 색인과 열을 가지며 다른 데이터 만 나타납니다. 인덱스의 서브 세트 인 추가 배열 X이 있습니다. I 달성 싶은조건이있는 팬더 데이터 프레임 결합/연결
: 또한 및 B 같은 인덱스 열이 생성 행렬 C. 데이터의 경우 인덱스가 X이면 A 데이터 항목의 행 항목을 취합니다. 그렇지 않으면 B에서 행 항목을 취합니다.
나는 이것을 달성하기위한 파이썬 방법이있을 것이라고 생각했지만 컴파일하지 않았습니다. 그래서 예를 들어 나는 의 인덱스와 C dataframe을 만든 다음 같은 것들을 시도 :
C = C.apply(lambda i: A.ix[i.index] if i in X else B.ix[i.index])
뭔가 내가 기본적으로 수학적으로 그것을 해결 순간에 작업을해야합니다. 그래서 X을 기반으로 두 개의 불리언 배열을 만들어 A과 B에서 각각 원하는 항목을 지정합니다. I는 해당 행렬로 및 B 곱셈하고 C = + B 할. 이것은 해결책을 얻기 위해 매우 오랜 시간이 걸렸습니다. 나는 더 짧고 더 가독성있는 것을 뒤쫓아 갔다.
C = A.copy()
C.update(B.iloc[X])
당신은 기본적 dataframes 중 하나의 사본을 가지고 일치하는 인덱스에 대한 필터를 다른 하나에서 레코드를 업데이트 :
def testIn(row):
return [x in X for x in row.index]
def testOut(row):
return [x not in X for x in row.index]
AMAP = C.apply(testIn, axis=0)
BMAP = C.apply(testOut, axis=0)
ANEW = pandas.DataFrame(AMAP*A)
BNEW = pandas.DataFrame(BMAP*B)
C = ANEW + BNEW
! 고맙습니다. 나는 이것을 다른 곳에서 사용하고 있었지만 여기서 그것을 해결책으로 간과했다. – MMM