首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >嵌套循环Python计算列表中的值

嵌套循环Python计算列表中的值
EN

Stack Overflow用户
提问于 2018-04-06 02:21:31
回答 1查看 802关注 0票数 0

我想在嵌套循环中计算以下函数,并将其保持为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Calc_Value = value_a(2D) - (values_b(0D) + values_b(1D))/10000

其结果是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.1274875

其定义为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
value_a(2D) corresponds to type **a**, year **2D** and value **1.1275**
value_b(0D) corresponds to type **b**, year **0D** and value **0**
value_b(1D) corresponds to type **b**, year **1D** and value **0.125**

不知何故,我不知道如何定义下面的函数,以便为b值使用适当的两个值,如上面所示?

有一种方法可以直接和熊猫(Pandas Version)一起做,但是想用我的嵌套方式。

更新:

我计算了我的函数,得到了适当的值,但仍然有一个问题,就是我把值计算了几次而不是一次。我得到每个值b的值a,直到计算出适当的值,也就是最后一个值。我只想保留最后的价值。

1.1275 1.1275 1.1275 1.1274875 ->**仅显示此值**

代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd

def CalcValue(year, a, b):  
    normalization = 0.0
    value_0D = 0.0
    value_1D = 0.0
    Calc = 0.0
    normalization = 10000.0
    if year == "0D":    
        value_0D = b
    elif year == "1D":
        value_1D = b
    Calc = a-(value_0D+value_1D)/normalization            
    return Calc


data = pd.read_csv('C:/Users/mcm/Desktop/Book1.csv').fillna('')

pd_date = pd.DatetimeIndex(data['date'].values)
data['date'] = pd_date
index_data = data.set_index('date')

for current_date in index_data.index.unique():    
    print('calculating date: ' + str(current_date))

    for index, row in index_data.iterrows():
        if index == current_date:
            for index2, row2 in index_data.iterrows(): 
                if index2 == current_date:
                    if row['type'] in {'a', 'b'} and row2['type'] in {'a', 'b'}:
                        if row['type'] != row2['type'] and row['type'] != 'a' and row2['type'] != 'b':  
                            test = CalcValue(row['year'], row2['value'],row['value'])
                            print(test)

数据如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
date    type    year    value
2015-02-09  a   2D  1.1275
2015-02-09  b   10M 58.125
2015-02-09  b   11M 68.375
2015-02-09  b   1M  3.345
2015-02-09  b   1W  0.89
2015-02-09  b   1Y  79.375
2015-02-09  b   2M  7.535
2015-02-09  b   2W  1.8
2015-02-09  b   3M  11.61
2015-02-09  b   3W  2.48
2015-02-09  b   4M  16.2
2015-02-09  b   5M  21.65
2015-02-09  b   6M  27.1
2015-02-09  b   7M  33.625
2015-02-09  b   8M  41.375
2015-02-09  b   9M  49.5
2015-02-09  b   0D  0
2015-02-09  b   1D  0.125
2015-02-09  c   2Y  -28.5
2015-02-09  c   3Y  -28.75
2015-02-09  c   4Y  -28
2015-02-09  c   5Y  -27.5
2015-02-09  c   6Y  -27
2015-02-09  c   7Y  -26.75
2015-02-09  c   8Y  -26.25
2015-02-09  c   9Y  -25.5
2015-02-09  c   10Y -25
2015-02-10  a   2D  1.1297
2015-02-10  b   10M 60.5
2015-02-10  b   11M 70.375
2015-02-10  b   1M  3.32
2015-02-10  b   1W  0.84
2015-02-10  b   1Y  81.625
2015-02-10  b   2M  7.54
2015-02-10  b   2W  1.74
2015-02-10  b   3M  11.745
2015-02-10  b   3W  2.45
2015-02-10  b   4M  16.4
2015-02-10  b   5M  22.05
2015-02-10  b   6M  28.1
2015-02-10  b   7M  35.375
2015-02-10  b   8M  42.625
2015-02-10  b   9M  51
2015-02-10  b   0D  0.105
2015-02-10  b   1D  0.11
2015-02-10  c   2Y  -29.5
2015-02-10  c   3Y  -29.75
2015-02-10  c   4Y  -29.5
2015-02-10  c   5Y  -29
2015-02-10  c   6Y  -28.5
2015-02-10  c   7Y  -28
2015-02-10  c   8Y  -27.5
2015-02-10  c   9Y  -26.75
2015-02-10  c   10Y -26.25
EN

回答 1

Stack Overflow用户

发布于 2018-04-09 03:53:15

这是最低限度的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in range(20):
    print(i)
#print(i)

这包括一个条件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in range(20):
    if True:
        test = i
        print(test)
#print(test)

您的问题只是从循环中获得最后一个计算值--您已经实现了这一点,但是您正在打印循环中的每个计算值,即在满足条件的每个迭代中。快速的解决方案是在循环之后打印它(交换上面print()上的注释)。

当你找到你想要的东西时,你通常会停止循环。否则,您将使用另一个变量来存储结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
keepitthatway = None
for i in range(42):
    if i==7:
        keepitthatway = i
        # keep on iterating if necessary or
        #break
print(i)
print(keepitthatway)

有很多Python编程教程,例如https://wiki.python.org/moin/ForLoop。看一看;-)

对于Minimal, Complete, and Verifiable example,这也是可行的。虽然不是很小,但它类似于您的代码结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for current_date in range(2):
    print('calculating something...')
    for index, row in enumerate(range(20)):
        if index == current_date:
            for index2, row2 in enumerate(range(20)):
                if True:
                    if True:
                        if True:
                            test = index
                            print(test)
    #print(test)

仅仅限制您的数据集已经是一个改进:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd

# pretend to be the csv file
import io
csv = io.StringIO("""date\ttype\tyear\tvalue
2015-02-09\ta\t2D\t1.1275
2015-02-09\tb\t10M\t58.125
2015-02-09\tc\t2Y\t-28.5
2015-02-10\ta\t2D\t1.1297
2015-02-10\tb\t10M\t60.5
2015-02-10\tc\t2Y\t-29.5
2015-02-10\tc\t10Y\t-26.25
""")

def CalcValue(year, a, b):
    normalization = 0.0
    value_0D = 0.0
    value_1D = 0.0
    Calc = 0.0
    normalization = 10000.0
    if year == "0D":
        value_0D = b
    elif year == "1D":
        value_1D = b
    Calc = a-(value_0D+value_1D)/normalization
    return Calc

data = pd.read_csv(csv, sep="\t").fillna('')

#print(data)
#import sys;sys.exit()

pd_date = pd.DatetimeIndex(data['date'].values)
data['date'] = pd_date
index_data = data.set_index('date')

for current_date in index_data.index.unique():
    print('calculating date: ' + str(current_date))

    for index, row in index_data.iterrows():
        if index == current_date:
            for index2, row2 in index_data.iterrows():
                if index2 == current_date:
                    if row['type'] in {'a', 'b'} and row2['type'] in {'a', 'b'}:
                        if row['type'] != row2['type'] and row['type'] != 'a' and row2['type'] != 'b':
                            test = CalcValue(row['year'], row2['value'],row['value'])
    print(test)

打印

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
calculating date: 2015-02-09 00:00:00
1.1275
calculating date: 2015-02-10 00:00:00
1.1297

(当然,这些值与问题中的值不同,因为数据集被修改了)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49690613

复制
相关文章
NLTK之朴素贝叶斯分类器
本文介绍了NLTK中的朴素贝叶斯分类器,并说明了其在分词任务中的使用。首先,作者指出了使用朴素贝叶斯分类器进行分词任务中的问题,并给出了一个例子。最后,作者说明了如何使用词频来表示字典元素,并实验了不同的参数对结果的影响。
用户1148830
2018/01/03
6890
NLTK-007:分类文本(文档情感分类)
之前我们看了几个例子,那里文档已经按类别标记。使用这些语料库,我们可以建立分类器。自动给新文档添加适当的类别标签。 首先我们构造一个标记了相应类别的文档清单,对于这个例子,我选择了nltk中的电影评论语料库,将每个评论分为正面或者负面。
李玺
2021/11/22
4000
NLTK-007:分类文本(文档情感分类)
NLTK-005:分类和标注词汇
之前大家也肯定学过名字、动词、形容词、副词之间的差异,这些词类不是闲置的,而是对许多语言处理任务都有用的分类,正如我们将看到的,这些分类源于对文本中词的分布的简单的分析。
李玺
2021/11/22
6130
NLTK-005:分类和标注词汇
NLTK-006:分类文本(性别鉴定)
分类是为给定的输入选择正确的类标签的任务,在基本的分类任务中,每个输入被认为是与所有其它输入隔离的,并且标签集是预先定义的。下面是分类任务的一些例子:
李玺
2021/11/22
5620
NLTK-006:分类文本(性别鉴定)
NLTK-008:分类文本(有监督分类的更多例子)
句子分割可以看作是一个标点符号的分类任务:每当我们遇到一个可能会结束的句子的符号,我们必须决定他是否终止了当前句子。
李玺
2021/11/22
5650
解决 无法解析名称 NaiveBayes.fit。/i get Undefined variable “NaiveBayes“ or class “NaiveBayes.fit“.
应用朴素贝叶斯分类器时候,发现报错无法解析名称 NaiveBayes.fit 这是因为 你想用NaiveBayes。适用于MATLAB R2018b。 根据NaiveBayes的R2014b发布说明,fit被fitNaiveBayes取代: 同时根据R2018a发布说明fitNaiveBayes被fitcnb取代。 因此,使用fitcnb即可。 将NaiveBayes.fit 改为 fitcnb 就好啦!!! 参考链接: 链接: 点击这里.
全栈程序员站长
2022/11/15
5310
【NLP】Python NLTK获取文本语料和词汇资源
NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开数据集、模型上提供了全面、易用的接口,涵盖了分词、词性标注(Part-Of-Speech tag, POS-tag)、命名实体识别(Named Entity Recognition, NER)、句法分析(Syntactic Parse)等各项 NLP 领域的功能。本文主要介绍NLTK(Natural language Toolkit)的几种语料库,以及内置模块下函数的基本操作,诸如双连词、停用词、词频统计、构造自己的语料库等等,这些都是非常实用的。
机器学习AI算法工程
2019/10/28
2.1K0
【NLP】Python NLTK获取文本语料和词汇资源
垃圾邮件检测.第1部分
作者 | Md Sohel Mahmood 编译 | VK 来源 | Towards Data Science
磐创AI
2021/11/10
1.1K0
C# 中的“智能枚举”:如何在枚举中增加行为
在这个示例中,我们定义了一个名为 Weekday 的枚举,其中包括每个星期的日子。然后在 Main 方法中,我们将 today 变量设置为 Tuesday,并使用 ToString() 方法将其转换为字符串。
郑子铭
2023/08/30
3190
C# 中的“智能枚举”:如何在枚举中增加行为
详解如何在Laravel中增加自定义全局函数
http://www.php.cn/php-weizijiaocheng-383928.html
全栈程序员站长
2021/10/27
2.9K0
使用 FastAI 和即时频率变换进行音频分类
目前深度学习模型能处理许多不同类型的问题,对于一些教程或框架用图像分类举例是一种流行的做法,常常作为类似“hello, world” 那样的引例。FastAI 是一个构建在 PyTorch 之上的高级库,用这个库进行图像分类非常容易,其中有一个仅用四行代码就可训练精准模型的例子。随着v1版的发布,该版本中带有一个data_block的API,它允许用户灵活地简化数据加载过程。今年夏天我参加了Kaggle举办的Freesound General-Purpose Audio Tagging 竞赛,后来我决定调整其中一些代码,利用fastai的便利做音频分类。本文将简要介绍如何用Python处理音频文件,然后给出创建频谱图像(spectrogram images)的一些背景知识,示范一下如何在事先不生成图像的情况下使用预训练图像模型。
AI研习社
2019/05/15
1.8K0
NLTK FreqDist
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/15
2970
NLTK FreqDist
使用python+机器学习方法进行情感分析(详细步骤)
不是有词典匹配的方法了吗?怎么还搞多个机器学习方法。 因为词典方法和机器学习方法各有千秋。 机器学习的方法精确度更高,因为词典匹配会由于语义表达的丰富性而出现很大误差,而机器学习方法不会。而且它可使用的场景更多样。无论是主客观分类还是正负面情感分类,机器学习都可以完成任务。而无需像词典匹配那样要深入到词语、句子、语法这些层面。 而词典方法适用的语料范围更广,无论是手机、电脑这些商品,还是书评、影评这些语料,都可以适用。但机器学习则极度依赖语料,把手机语料训练出来的的分类器拿去给书评分类,那是注定要失败的。
机器学习AI算法工程
2018/03/14
6K0
使用python+机器学习方法进行情感分析(详细步骤)
如何在 Discourse 中批量移动主题到不同的分类中
例如,我们需要将下面的主题批量从当前的分类中移动到另外一个叫做 数据库 的分类中。
HoneyMoose
2021/07/23
1.2K0
如何在 Discourse 中批量移动主题到不同的分类中
如何在GitLab中的个人资料里增加SSH密钥
2、提示‘输入保存密钥的文件(//.ssh/id_rsa):’,按回车 3、提示输入密码显示“输入密码(空密码)”。 输入密码后按回车 4、提示再次输入密码,输入密码后按回车。 5、SSH密钥已生成
超级小可爱
2023/02/23
1.4K0
Discourse 如何在首页中显示 Box 的子分类
如果你不选择上门的选项的话,下面的列表是不会显示的,你可以通过这个自行确定如何显示子项目。
HoneyMoose
2020/05/30
2.1K0
Discourse 如何在首页中显示 Box 的子分类
机器学习中如何选择分类器
在机器学习中,分类器作用是在标记好类别的训练数据基础上判断一个新的观察样本所属的类别。分类器依据学习的方式可以分为非监督学习和监督学习。 非监督学习顾名思义指的是给予分类器学习的样本但没有相对应类别标签,主要是寻找未标记数据中的隐藏结构。 监督学习通过标记的训练数据推断出分类函数,分类函数可以用来将新样本映射到对应的标签。在监督学习方式中,每个训练样本包括训练样本的特征和相对应的标签。监督学习的流程包括确定训练样本的类型、收集训练样本集、确定学习函数的输入特征表示、确定学习函数的结构和对应的学习算法、完成整
企鹅号小编
2018/01/10
2.3K0
如何在BI中增加“路线地图”并进行数据分析?
随着客户的需求越来越“百变”,最近在做大屏设计的葡萄陷入了困境。 近期客户提出的需求是想在BI工具中增加 “路线地图”展示功能并进行数据分析。 不仅如此,这个“路线地图”还要兼具实用的功能与美观的动效,典型的“既要又要”系列。但是这对于我们的设计师葡萄来说,难度就有些大了。 静态图片展示不困难,可要让这地图动起来,确实有一些难度。 所以我们就将该问题拆成两部分,来解决这个问题。首先,我们需要一个路线地图工具。
葡萄城控件
2022/09/21
1.4K0
如何在BI中增加“路线地图”并进行数据分析?
python中的gensim入门
在自然语言处理(NLP)和信息检索领域中,文本向量化是一个重要的任务。文本向量化可以将文本数据转换为数值向量,以便于计算机进行处理和分析。Gensim是一个强大的Python库,专门用于处理文本数据和实现文本向量化。 本篇文章将带你入门使用Gensim库,介绍如何在Python中对文本进行向量化,并用其实现一些基本的文本相关任务。
大盘鸡拌面
2023/10/25
6070
点击加载更多

相似问题

带有EventMachine服务的任务

20

EventMachine Rails的多类实例

13

带有eventmachine的mongoid和mongomapper

23

如何使用带有实例索引的模块实例?

10

模块中的实例变量?

40
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文