다음과 같은 dataframe과 series가 있다.
이 예시는 dataframe의 columns와 Series의 index가 a, b, c, d로 같은 경우이다.
df=DataFrame(np.arange(16).reshape(4,4), columns=list('abcd'))
df
s=Series(range(10,14),index=list('abcd'))
s
이때, df와 s를 + 연산을 사용한 결과는 다음과 같다.
Dataframe의 column에 해당하는 Series의 index를 가지는 값을 해당 column에 더한다.
즉, s에서 인덱스 a에 해당하는 값인 10을 df의 a열에 한 번에 더한다.
한 번에 더하는 이 과정을 브로드 캐스팅(broadcasting)이라 한다.
+ 대신 add 메소드를 사용해도 같은 결과가 출력된다.
출력 결과를 통해 add 메소드의 axis 기본 값은 axis=1(열 방향)임을 알 수 있다.
그렇다면, dataframe의 columns와 Series의 index가 다른 경우에는 어떤 결과가 나올까
s2에는 index를 따로 지정해주지 않았으므로 0부터 순서대로 index가 매겨진다.
df=DataFrame(np.arange(16).reshape(4,4), columns=list('abcd'))
df
s2=Series(range(10,14))
s2
df와 s2에 + 연산을 사용하면 NaN이 출력된다.
이유는 index와 column이 다르기 때문에 더하기(+) 연산을 할 수 있는 값이 없기 때문이다.
출력 결과를 보면 s2의 인덱스인 0,1,2,3이 column 자리에 위치하고 있는 것을 볼 수 있고, 이를 통해 + 연산은 series의 index와 dataframe의 column이 같을 때 가능함을 알 수 있다.
add 메소드를 사용하면 원하는 결과를 구할 수 있다.
이 경우에는 dataframe의 index와 series의 index가 같이 때문에 열방향이 아닌 행방향(axis=0)으로 연산해야 하며, 브로드캐스팅이 발생한다.