请问pandas中如下代码的运行原理?
import pandas as pd
import numpy as np
angle = pd.DataFrame({'ratio':np.array([0.5, 0.75, 1.0, 1.5, 1.75], dtype=np.float),
'alpha':np.array([63, 53., 45, 33, 29], dtype=np.float),
'beta1':np.array([29.5, 29, 28, 26, 25], dtype=np.float),
'beta2':np.array([40, 39, 37, 35, 35], dtype=np.float)})
def search_b1b2(n):
'''根据 ratio 查找对应的 beta1, beta2 和 alpha'''
temp = angle[angle['ratio']==n]
beta1 = temp.loc[temp.index[0], 'beta1']
beta2 = temp.loc[temp.index[0], 'beta2']
alpha = temp.loc[temp.index[0], 'alpha']
return beta1, beta2, alpha
n = 1
print(search_b1b2(n))
运行结果是:
(28.0, 37.0, 45.0)
其中
temp = angle[angle['ratio']==n]
- 上一行代码的运行原理是什么?
angle['ratio']
不是表格吗? 为什么能与n
判断相等?angle['ratio']==n
不是返回的是布尔值吗,为什么能作为angle[angle['ratio']==n]
的索引?- 另外,请问 下
temp.index[0]
是什么意思?为什么最后return
返回的是元组?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
angle['ratio']
不是表格吗?angle
是表格,angle['ratio']
是选出'ratio'
那一列的数据。n
判断相等?angle['ratio']==n
不是返回的是布尔值吗,为什么能作为angle[angle['ratio']==n]
的索引?选出
ratio
那列数据之后,数组中的每个元素分别与n
进行比较,得到一个 bool 数组。选出[0.5, 0.75, 1.0, 1.5, 1.75]
判断是否与1相等,得到[false, false, true, false, false]
。numpy 提供了 bool 数组索引的机制,所以返回 true 对应的那一行。temp.index[0]
是什么意思?返回
temp
这张表的第 0 行的索引值。这里你在构建angle
的时候没有指定索引,所以默认用数字做索引,所以返回 0。return
返回的是元组?你函数里写的是
return beta1, beta2, alpha
,python 中对于多返回值是用 tuple 打包处理的P.S.
看到前面我以为你 pandas 基础为 0,看到最后一个问题我才知道你 python 基础为 0,好好找本书看看吧。