Series与DataFrame之间算术运算和数据对齐

算术运算和数据对齐(NaN)

from pandas import Series,DataFrame
import numpy as np
import pandas as pd

Series

s1 = Series([-7.3,-2.5,3.4,1.5],index=['a','c','d','e'])
s1
a   -7.3
c   -2.5
d    3.4
e    1.5
dtype: float64
s2 = Series([-2.1,3.6,-1.5,4,3.1], index=['a','c','e','f','g'])
s2
a   -2.1
c    3.6
e   -1.5
f    4.0
g    3.1
dtype: float64
s1 + s2
a   -9.4
c    1.1
d    NaN
e    0.0
f    NaN
g    NaN
dtype: float64

DataFrame

print(list('bde'))
['b', 'd', 'e']
df1 = DataFrame(np.arange(9).reshape((3,3)),
               columns=list('bcd'),index=['Ohio','Texas','Colorado'])
df1
bcd
Ohio012
Texas345
Colorado678
df2 = DataFrame(np.arange(12).reshape((4,3)),
               columns=list('bde'),index=['Utah','Ohio','Texas','Oregon'])
df2
bde
Utah012
Ohio345
Texas678
Oregon91011
df1 + df2 
bcde
ColoradoNaNNaNNaNNaN
Ohio3.0NaN6.0NaN
OregonNaNNaNNaNNaN
Texas9.0NaN12.0NaN
UtahNaNNaNNaNNaN
方法说明
add用于加法(+)的方法
sub用于减法(-)的方法
div用于除法(/)的方法
mul用于乘法(*)的方法

在算术方法中填充值

df1 = DataFrame(np.arange(12).reshape((3,4)),columns=list('abcd'))
df1
abcd
00123
14567
2891011
df2 = DataFrame(np.arange(20).reshape((4,5)),columns=list('abcde'))
df2
abcde
001234
156789
21011121314
31516171819
df1.add(df2,fill_value=0)
abcde
00.02.04.06.04.0
19.011.013.015.09.0
218.020.022.024.014.0
315.016.017.018.019.0

DataFrame 与 Series 之间的运算

启发性例子

计算一个二维数组与其某行之间的差 (广播)

arr = np.arange(12).reshape((3,4))
arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
arr[0]
array([0, 1, 2, 3])
arr - arr[0]
array([[0, 0, 0, 0],
       [4, 4, 4, 4],
       [8, 8, 8, 8]])

DataFrame 与 Series 之间运算

行之间计算

frame = DataFrame(np.arange(12).reshape((4,3)),
                 columns=list('bde'),index=['Utah','Ohio','Texas','Oregon'])
frame
bde
Utah012
Ohio345
Texas678
Oregon91011
series = frame.ix[0]  #行
series
b    0
d    1
e    2
Name: Utah, dtype: int64
frame - series
bde
Utah000
Ohio333
Texas666
Oregon999
series2 = Series(range(3),index=['b','e','f'])
series2
b    0
e    1
f    2
dtype: int64
frame + series2
bdef
Utah0.0NaN3.0NaN
Ohio3.0NaN6.0NaN
Texas6.0NaN9.0NaN
Oregon9.0NaN12.0NaN

列之间运算

frame 
bde
Utah012
Ohio345
Texas678
Oregon91011
frame['d']
Utah       1
Ohio       4
Texas      7
Oregon    10
Name: d, dtype: int64
series3 = frame['d']
series3
Utah       1
Ohio       4
Texas      7
Oregon    10
Name: d, dtype: int64
frame.sub(series3,axis=0)
bde
Utah-101
Ohio-101
Texas-101
Oregon-101
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值