python pandas中的算术/计算和数据对齐

pandas中的算术和数据对齐

数据对齐

pandas中,对Series和DataFrame进行算术计算时,会自动对齐索引,如果一个索引不是在两份数据中都存在,相应的位置上会产生缺失值

  • Series
s1 = pd.Series(np.arange(4), index=list('abcd'))
s2 = pd.Series(np.arange(4), index=list('cdef'))
s1+s2
>>> a    NaN
b    NaN
c    2.0
d    4.0
e    NaN
f    NaN
dtype: float64
# 索引['a', 'b', 'e', 'f']没有交叠,产生了缺失值
  • DataFrame
df1 = pd.DataFrame(np.arange(4).reshape(2,2), index=list('ab'), columns=list('cd'))
df2 = pd.DataFrame(np.arange(4).reshape(2,2), index=list('ae'), columns=list('df'))
df1
>>> c	d
a	0	1
b	2	3

df2
>>> d	f
a	0	1
e	2	3

df1+df2
>>>	c	d	f
a	NaN	1.0	NaN
b	NaN	NaN	NaN
e	NaN	NaN	NaN

如何用计算方法避免缺失值

可以在Series和DataFrame上使用计算方法,定义当缺失值存在时,填入何值。

s1 = pd.Series(np.arange(4), index=list('abcd'))
s2 = pd.Series(np.arange(4), index=list('cdef'))
s1.add(s2, fill_value=0)
>>>  a    0.0
b    1.0
c    2.0
d    4.0
e    2.0
f    3.0
dtype: float64

df1 = pd.DataFrame(np.arange(4).reshape(2,2), index=list('ab'), columns=list('cd'))
df2 = pd.DataFrame(np.arange(4).reshape(2,2), index=list('ae'), columns=list('df'))
df1.add(df2)
>>> c	d	f
a	0.0	1.0	1.0
b	2.0	3.0	NaN
e	NaN	2.0	3.0
# 这里['b', 'f']和['e', 'c']位置出现了缺失值,是因为这两个索引值在df1和df2中都不存在

算术方法

pandas中有以下算术方法,其中翻转方法中参数是相反的。

方法翻转方法
addradd
subrsub
divrdiv
floordivrfloordiv
mulrmul
powrpow

DataFrame和Series之间的计算

  • DataFrame和Series的数学操作中会将Series的索引和DataFrame的列进行匹配,并广播到各行
df = pd.DataFrame(np.arange(12).reshape(3,4), columns=list('abcd'))
s = df.loc[0]
df
>>> a	b	c	d
0	0	1	2	3
1	4	5	6	7
2	8	9	10	11

s
>>> a    0
b    1
c    2
d    3

df-s
>>> a	b	c	d
0	0	0	0	0
1	4	4	4	4
2	8	8	8	8
  • 使用算术方法,指定axis='index’或者axis=0可以实现在列上进行广播。
df = pd.DataFrame(np.arange(12).reshape(3,4), columns=list('abcd'))
s = df['a']

df
>>>	a	b	c	d
0	0	1	2	3
1	4	5	6	7
2	8	9	10	11

s
>>> 0    0
1    4
2    8

df.sub(s, axis='index')
>>> a	b	c	d
0	0	1	2	3
1	0	1	2	3
2	0	1	2	3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值