Pandas的对齐运算
Pandas的对齐运算
1、算术运算和数据对齐
1、Series 的对齐运算
s1 = pd.Series(np.arange(4),index=['a','b','c','d'])
s2 = pd.Series(np.arange(5),index=['a','c','e','f','g'])
s1:
a 0
b 1
c 2
d 3
dtype: int32
s2:
a 0
c 1
e 2
f 3
g 4
dtype: int32
s1 + s2
a 0.0
b NaN
c 3.0
d NaN
e NaN
f NaN
g NaN
dtype: float64
2、DataFrame的对齐运算
# DataFrame
df1 = pd.DataFrame(np.arange(12).reshape(4,3),index = ['a','b','c','d'],columns= list('ABC'))
df2 = pd.DataFrame(np.arange(9).reshape(3,3),index= ['a','b','f'],columns= list('ABD'))
df1
A B C
a 0 1 2
b 3 4 5
c 6 7 8
d 9 10 11
df2
A B D
a 0 1 2
b 3 4 5
f 6 7 8
df1 + df2
A B C D
a 0.0 2.0 NaN NaN
b 6.0 8.0 NaN NaN
c NaN NaN NaN NaN
d NaN NaN NaN NaN
f NaN NaN NaN NaN
2、使用填充值的算术方法
# Series
s1
a 0
b 1
c 2
d 3
dtype: int32
s2
a 0
c 1
e 2
f 3
g 4
dtype: int32
s1+ s2
a 0.0
b NaN
c 3.0
d NaN
e NaN
f NaN
g NaN
dtype: float64
s1.add(s2,fill_value= 0 )
a 0.0
b 1.0
c 3.0
d 3.0
e 2.0
f 3.0
g 4.0
dtype: float64
#DataFrame
df1.add(df2,fill_value= 0)
A B C D
a 0.0 2.0 2.0 2.0
b 6.0 8.0 5.0 5.0
c 6.0 7.0 8.0 NaN
d 9.0 10.0 11.0 NaN
f 6.0 7.0 NaN 8.0
1/df1
A B C
a inf 1.000000 0.500000
b 0.333333 0.250000 0.200000
c 0.166667 0.142857 0.125000
d 0.111111 0.100000 0.090909
df1.rdiv(1) # 字母r开头 会翻转参数
A B C
a inf 1.000000 0.500000
b 0.333333 0.250000 0.200000
c 0.166667 0.142857 0.125000
d 0.111111 0.100000 0.090909
df1.reindex(columns=df2.columns,fill_value=9)
A B D
a 0 1 9
b 3 4 9
c 6 7 9
d 9 10 9
3、DataFrame 和Series混合运算
arr = np.arange(12).reshape(3,4)
arr
Out:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
arr[0]
Out:
array([0, 1, 2, 3])
arr - arr[0] # 一个数组减去第一行数据,每一行数据都会减,这就叫广播
Out:
array([[0, 0, 0, 0],
[4, 4, 4, 4],
[8, 8, 8, 8]])
df1
A B C
a 0 1 2
b 3 4 5
c 6 7 8
d 9 10 11
s3 = df1.iloc[0]
s3
Out:
A 0
B 1
C 2
Name: a, dtype: int32
df1 - s3 # Series 的行索引匹配DataFrame 的列索引,这样就完成了广播,向下广播
# 竖方向走的叫行广播
Out:
A B C
a 0 0 0
b 3 3 3
c 6 6 6
d 9 9 9
s4 = df1['A']
s4
Out:
a 0
b 3
c 6
d 9
Name: A, dtype: int32
df1.sub(s4,axis='index') # 横方向走叫列广播
Out:
A B C
a 0 1 2
b 0 1 2
c 0 1 2
d 0 1 2
算术方法表:
方法 | 描述 |
---|---|
add,radd | 加法(+) |
sub,rsub | 减法(-) |
div,rdiv | 除法(/) |
floordiv,rfllordiv | 整除(//) |
mul,rmul | 乘法(*) |
pow,rpow | 幂次方(**) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能