저는 두 개의 불균형 데이터 프레임을 가지고 있으며 그 사이의 델타 값을 빼서 세 번째 데이터 프레임을 만들고 싶습니다. 다음은 세 가지 데이터 프레임의 예입니다. 나는 CURRENT를 가져 가고 싶습니다. DELTA를 얻으려면 EXPECTED를 뺍니다. 이것은 예상대로 작동하며 CURRENT 및 EXPECTED의 값이 존재하면 DELTA에서 올바른 결과를 생성합니다. 그러나 존재하지 않으면 델타에서 NaN을 얻습니다.팬더에서 두 개의 불균형 데이터 프레임 빼기
CURRENT
Region1 Region2
type1 5 3
type2 2 11
type3 7 1
EXPECTED
Region1 Region2
type1 15 1
type2 6 4
DELTA
Region1 Region2
type1 -10 2
type2 -4 7
type3 7 1
현재 코드에서 DELTA의 type3 행은 NaN, NaN입니다.
def get_delta(self, CURRENT, EXPECTED):
delta = CURRENT
delta['Region1'] = current[['Region1']] - \
expected[['Region1']]
delta['Region2'] = current[['Region2']] - \
expected[['Region2']]
return delta
나는 delta.isnull() 또는 delta.empty가 있는지 확인하려고했지만 그 중 하나가 작동하지 않습니다. 본질적으로 나는 EXPECTED에 존재하지 않는 값을 0으로 취급하고 싶습니다. 그런 다음 DELETE를 얻기 위해 CURRENT-RESERVED 뺄셈을하십시오. I는, 또는 0
같이 적절한 행/지수 예상에 행 누락 채워 I 시도 I 0 같은 NaN를 처리하여 수행 할 수 같다 :
new_df = pd.concat([CURRENT, EXPECTED], axis=1).fillna(0)
하고 거기에서 감산 그러나 내가 concat을 시도 할 때 "ValueError : shape mismatch : 모양의 값 배열 (0,13)이 모양 (1,13)의 색인 결과에 브로드 캐스팅 될 수 없으므로"무슨 일이 일어나는지 확실하지 않습니다.
감사합니다! 이것은 필자가 필요로하고 코드에서 전체 델타 함수를 제거하도록 허용 한 것입니다. – Aaron
당신은 환영합니다. – jezrael