index 기준으로 연산을 수행한다.
겹치는 index가 없으면 NaN으로 반환한다.
import pandas as pd
import numpy as np
from pandas import Series
from pandas import DataFrame
list_data = [1,2,3,4,5]
list_name1 = ["a", "b", "c", "e", "d"]
list_name2 = ["b", "c", "e", "d", "e", "f"]
s1 = Series(data = list_data, index = list_name1)
s2 = Series(range(5,11), index = list_name2)
s1.add(s2)
a NaN
b 7.0
c 9.0
d 13.0
e 11.0
e 13.0
f NaN
dtype: float64
s1+s2
a NaN
b 7.0
c 9.0
d 13.0
e 11.0
e 13.0
f NaN
dtype: float64
df는 column과 index를 모두 고려한다.
import pandas as pd
import numpy as np
from pandas import Series
from pandas import DataFrame
df1 = DataFrame(np.arange(9).reshape(3,3), columns = list("abc"))
df2 = DataFrame(np.arange(16).reshape(4,4), columns = list("abcd"))
df1
a b c
0 0 1 2
1 3 4 5
2 6 7 8
df2
a b c d
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
df1+df2
a b c d
0 0.0 2.0 4.0 NaN
1 7.0 9.0 11.0 NaN
2 14.0 16.0 18.0 NaN
3 NaN NaN NaN NaN
df1.add(df2, fill_value=0)
a b c d
0 0.0 2.0 4.0 3.0
1 7.0 9.0 11.0 7.0
2 14.0 16.0 18.0 11.0
3 12.0 13.0 14.0 15.0
fill_value=0 : NaN이 생기는 것을 방지한다.
sub, div, mul 등 다양한 연산 제공한다.
시리즈 데이터와 데이터프레임을 합치면 브로드캐스팅이 발생한다.
브로드캐스팅
column을 기준으로 broadcasting이 발생한다.
import pandas as pd
import numpy as np
from pandas import Series
from pandas import DataFrame
s = Series(np.arange(10,14),index=list("abcd"))
df1 = DataFrame(np.arange(16).reshape(4,4), columns = list("abcd"))
s
a 10
b 11
c 12
d 13
dtype: int32
df1
a b c d
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
df1+s
a b c d
0 10 12 14 16
1 14 16 18 20
2 18 20 22 24
3 22 24 26 28
axis를 지정하면 row를 기준으로 브로드캐스팅이 되기도 한다.