Pandas-DataFrame演算

1576 ワード

同じカラム名を加算
df1 = pd.DataFrame({'a': [1, 2, 3,4], 'b': [ 5,6,7,8], 'c': [9,10,11,12]})
df2 = pd.DataFrame({'a': [10, 20, 30,40], 'b': [50, 60,70,80], 'c': [90,100, 110,120]})
df3 = pd.DataFrame({'d': [10, 20, 30,40], 'c': [40, 50, 60,70], 'b': [70, 80, 90,100]})

print df1 + df2

    a   b    c
0  11  55   99
1  22  66  110
2  33  77  121
3  44  88  132

重複カラム名の加算
print df1 + df3

    a    b   c   d
0 NaN   75  49 NaN
1 NaN   86  60 NaN
2 NaN   97  71 NaN
3 NaN  108  82 NaN

重複インデックスの加算
df5 = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]},
                       index=['index1', 'index2', 'index3'])
df6 = pd.DataFrame({'a': [10, 20, 30], 'b': [40, 50, 60], 'c': [70, 80, 90]},
                       index=['index4', 'index3', 'index2'])
 
print df5+df6

           a     b     c
index1   NaN   NaN   NaN
index2  32.0  65.0  98.0
index3  23.0  56.0  89.0
index4   NaN   NaN   NaN

Pandas shift()   DataFrame. shift (periods=1, freq=None, axis=0)
 
print df5

        a  b  c
index1  1  4  7
index2  2  5  8
index3  3  6  9

print df5.shift(1)

          a    b    c
index1  NaN  NaN  NaN
index2  1.0  4.0  7.0
index3  2.0  5.0  8.0

print df5.shift(1,axis=1)

         a    b    c
index1 NaN  1.0  4.0
index2 NaN  2.0  5.0
index3 NaN  3.0  6.0