pandas基础运算

《Python for Data Analysis》

算术运算和数据对齐

pandas可以对不同索引的对象进行算术运算。

例如:当对象相加时,如果存在不同的索引对,其结果的索引就是该索引对的并集。自动的数据对齐操作在不重叠的索引处引入了NA值。并且会在算术运算中传播。

In [1]: import numpy as np

In [2]: import pandas as pd

In [3]: from pandas import Series, DataFrame

In [4]: df1 = DataFrame(np.arange(12).reshape((3,4)),columns=list('abcd'))

In [5]: df2 = DataFrame(np.arange(20).reshape((4,5)),columns=list('abcde'))

In [6]: df1
Out[6]:
   a  b   c   d
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

In [7]: df2
Out[7]:
    a   b   c   d   e
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19

In [8]: df1+df2
Out[8]:
      a     b     c     d   e
0   0.0   2.0   4.0   6.0 NaN
1   9.0  11.0  13.0  15.0 NaN
2  18.0  20.0  22.0  24.0 NaN
3   NaN   NaN   NaN   NaN NaN

在算术方法中填充值

In [9]: df1.add(df2, fill_value=0)
Out[9]:
      a     b     c     d     e
0   0.0   2.0   4.0   6.0   4.0
1   9.0  11.0  13.0  15.0   9.0
2  18.0  20.0  22.0  24.0  14.0
3  15.0  16.0  17.0  18.0  19.0

In [10]: df1.reindex(columns=df2.columns, fill_value=0)
Out[10]:
   a  b   c   d  e
0  0  1   2   3  0
1  4  5   6   7  0
2  8  9  10  11  0

DataFrame和Series之间的运算

广播

In [12]: arr = np.arange(12).reshape((3,4))

In [13]: arr
Out[13]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [14]: arr[0]  #行
Out[14]: array([0, 1, 2, 3])

In [15]: arr - arr[0]
Out[15]:
array([[0, 0, 0, 0],
       [4, 4, 4, 4],
       [8, 8, 8, 8]])

默认情况下,DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下传播。series=frame.ix[0]

上例是Series取DataFrame的行,但是如果想匹配到DataFrame的行,且希望在列上传播,必须使用算术运算方法。frame.sub(series, axis=0)。传入的轴号就是希望匹配的轴。(series = frame['a']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值