请问pandas中如下代码的运行原理?

发布于 2022-09-06 10:40:31 字数 1151 浏览 11 评论 0

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]
  1. 上一行代码的运行原理是什么?
  2. angle['ratio'] 不是表格吗? 为什么能与 n 判断相等?
  3. angle['ratio']==n 不是返回的是布尔值吗,为什么能作为 angle[angle['ratio']==n] 的索引?
  4. 另外,请问 下 temp.index[0] 是什么意思?为什么最后 return 返回的是元组?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

洋洋洒洒 2022-09-13 10:40:31
  1. angle['ratio'] 不是表格吗?
    angle 是表格,angle['ratio'] 是选出 'ratio' 那一列的数据。
  2. 为什么能与 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 对应的那一行。
  3. temp.index[0] 是什么意思?
    返回 temp 这张表的第 0 行的索引值。这里你在构建 angle 的时候没有指定索引,所以默认用数字做索引,所以返回 0。
  4. 为什么最后 return 返回的是元组?
    你函数里写的是 return beta1, beta2, alpha,python 中对于多返回值是用 tuple 打包处理的

P.S.
看到前面我以为你 pandas 基础为 0,看到最后一个问题我才知道你 python 基础为 0,好好找本书看看吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文