pandas算术运算

df1 = DataFrame(np.arange(12).reshape(3,4),columns=list('abcd'))
df1
Out[74]: 
   a  b   c   d
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
df2 = DataFrame(np.arange(20).reshape(4,5),columns=list('abcde'))
df2
Out[79]: 
    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

如果单纯相加的话,空值会返回NaN

df1+df2
Out[80]: 
      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

所以需要使用df1的add方法,传入df2以及一个fill_value参数:

df1.add(df2,fill_value=0)
Out[83]: 
      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

df1.add(df2,fill_value=10)
Out[84]: 
      a     b     c     d     e
0   0.0   2.0   4.0   6.0  14.0
1   9.0  11.0  13.0  15.0  19.0
2  18.0  20.0  22.0  24.0  24.0
3  25.0  26.0  27.0  28.0  29.0
方法说明
add用于加法(+)的方法
sub用于减法(-)的方法
div用于除法(/)的方法
mul用于乘法(*)的方法

Series和DataFrame之间的计算

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

series1 = df2.ix[0]
__main__:1: DeprecationWarning: 
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing

See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/
indexing.html#ix-indexer-is-deprecated
series1
Out[136]: 
a    0
b    1
c    2
d    3
e    4
Name: (z,), dtype: int32df2-series1

df2-series1
Out[137]: 
    a   b   c   d   e
z   0   0   0   0   0
x   5   5   5   5   5
c  10  10  10  10  10
v  15  15  15  15  15

如果不是一一对应的话,同样会出现NaN
如果希望行在列上广播,必须用算术运算方法

series3=df2['d']
series3
Out[141]: 
z     3
x     8
c    13
v    18
Name: d, dtype: int32

df2.sub(series3,axis=0)
Out[145]: 
   a  b  c  d  e
z -3 -2 -1  0  1
x -3 -2 -1  0  1
c -3 -2 -1  0  1
v -3 -2 -1  0  1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值