python nontype 연산
조회수 495회
TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType'
Python에서 연산을 지정했을 때 nontype이 포함되는 경우는 NULL값으로 반환하고 싶은데 어떻게 코드를 작성하면 좋을까요
예를 들면 list A가 있고 list B가 있을 때 A의 원소 중 nontype이 있고 B의 원소 중 nontype이 있을 때 두 값의 차를 NULL로 반영하고 싶습니다.
2 답변
-
>>> a = [ 3, 4, 5, None , 7, 8 ] >>> b = [ 1, 2, None, 10, 9, 8 ] >>> diff = [ x-y if None not in (x, y) else None for x, y in zip(a, b) ] >>> diff [2, 2, None, None, -2, 0] >>> import pandas as pd >>> df = pd.DataFrame({'a':a, 'b':b}) >>> df a b 0 3.0 1.0 1 4.0 2.0 2 5.0 NaN 3 NaN 10.0 4 7.0 9.0 5 8.0 8.0 >>> df['diff'] = df.a - df.b >>> df a b diff 0 3.0 1.0 2.0 1 4.0 2.0 2.0 2 5.0 NaN NaN 3 NaN 10.0 NaN 4 7.0 9.0 -2.0 5 8.0 8.0 0.0 >>>
-
python 에서 None 이 NULL 입니다.
값의 차이라는 것이 존재할 수 없죠.
NoneType 이면 애초에 산술연산은 할 수 없는 겁니다.
두 리스트의 각각 동일 인덱스의 값으로 산술하는 것이 목적인건지요?
산술과정중에 None 값이 있는 경우 처리를 못하는 것인지요?
댓글 입력