根据条件打印数据帧的第一个值,然后迭代到下一个序列

温杰尔

我希望对跨越 100 年的每一天的选定美国地点(特别是 8 个)的 100 年气候数据进行数据分析。pandas dataFrame设置了最高温度、最低温度、平均温度、降雪量、降水总量以及日、年和月值的列(然后,我有一个也基于日期时间值的索引)。现在,我想设置一个 for 循环来打印每年 90 华氏度或更高的第一个最高温度,但仅是第一个。最终,我想将范围缩小到我的 8 个位置中的每一个,但首先我只想让 for 循环工作。

对 for 循环的各种迭代进行了试验。

for year in range(len(climate['Year'])):    
           if (climate['Max'][year] >=90).all():
                print (climate.index[year])
                break

不出所料,我提供的循环输出打印了第一个 90 度日周期(从 1919 年开始,我的数据帧的开始)并中断。

for year in range(len(climate['Year'])):    
           if (climate['Max'][year] >=90).all():
                print (climate.index[year])
                break

1919-06-12 00:00:00

没关系。如果我取出 break 语句,将打印所有 90 度日,包括同一年的多个。我只想打印每年的第一个值。我是否需要设置第二个 for 循环以在一年中递增?如果我在尝试循环遍历计数器时明确说明年份,如下所示,循环仍然从 1919 年开始,并最终达到越界索引。我知道这个逻辑是错误的。

count = 1919

while count < 2019:
    for year in range(len(climate['Year'])):    
        if (climate[climate['Year']==count]['Max'][year] >=90).all():
                print (climate.index[year])
                count = count+1

真诚地感谢任何输入。

卢克·勒弗布尔

您可以在没有第二个 for 循环的情况下实现这一点。假设climate数据框按时间顺序排列,这应该做你想做的:

current_year = None
for i in range(climate.shape[0]):
    if climate['Max'][i] >= 90 and climate['Year'][i] != current_year:
        print(climate.index[i])
        current_year = climate['Year'][i]

请注意,我们使用current_year变量来跟踪我们已经打印了结果的最近一年。然后,在 if 检查中,我们检查是否已经打印了循环中当前行年份的结果。

这是一种方法,但我建议看一下pandas.DataFrame.groupby ,因为我认为它非常适合您的用例。您可以获得一个包含每年前 >=90 天的数据框,如下所示(再次假设climate按时间顺序排列):

climate[climate.Max >= 90].groupby('Year').first()

这只是过滤数据框以仅包含 >=90 最大天数,将同一年的行分组在一起,并仅保留每个组的第一行。如果你有一个额外的 column Location,你可以扩展它以获得相同的除了每年每个位置:

climate[climate.Max >= 90].groupby(['Location', 'Year']).first()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将第一个迭代输入的值更改为下一个迭代输入值

来自分类Dev

根据数据帧R上成功第一个值的条件替换第二个值

来自分类Dev

Java获取下一个Enum值或从第一个开始

来自分类Dev

将下一个值移动到第一个空行熊猫

来自分类Dev

如何使用r中“下一个”组的第一个值?

来自分类Dev

打印数据集的 2 个连续数据条目的第一个和最后一个值,以绘制差异 - 在 R 中

来自分类Dev

如何淡入第一个元素并延迟2秒然后淡入下一个元素?

来自分类Dev

如何淡入第一个元素并延迟2秒然后淡入下一个元素?

来自分类Dev

根据上一个和下一个值过滤熊猫数据框

来自分类Dev

从第一个匹配条件获取结果,不考虑下一个匹配条件的结果

来自分类Dev

根据条件从第一个df到另一个df的列值

来自分类Dev

如何用R中每列的第一个值打印数据框的每个元素?

来自分类Dev

用下一个迭代中的第一个重复的最后一个元素进行迭代

来自分类Dev

尝试打印数组的第一个值时出现分段错误

来自分类Dev

将每列中的第一个值乘以 MATLAB 中的下一个值

来自分类Dev

匹配一个模式,然后转到下一个条件并打印详细信息

来自分类Dev

R dplyr窗口函数,获取下一个满足某些条件的x窗口中的第一个值

来自分类Dev

在满足熊猫数据帧中条件的数据帧位置处返回第一个值的位置

来自分类Dev

当第一个输入值的长度为3时,如何关注下一个输入?

来自分类Dev

将结果从一个“ for”循环迭代传递到下一个迭代?

来自分类Dev

匹配条件后下一个awk打印?

来自分类Dev

Pig如何传递第一个作业及其下一个作业中的数据

来自分类Dev

Tensorflow 迭代器下一个值

来自分类Dev

jQuery迭代上一个和下一个兄弟姐妹,直到第一个不匹配

来自分类Dev

将数据从一个数据帧复制到另一个数据帧,然后根据值替换数据

来自分类Dev

如何为每次迭代打印搜索序列的第一个结果?

来自分类Dev

如何只影响第一个下一个特定的div

来自分类Dev

MongoDB查找下一个文档或转到第一个

来自分类Dev

查找数组中值的第一个/下一个位置

Related 相关文章

  1. 1

    将第一个迭代输入的值更改为下一个迭代输入值

  2. 2

    根据数据帧R上成功第一个值的条件替换第二个值

  3. 3

    Java获取下一个Enum值或从第一个开始

  4. 4

    将下一个值移动到第一个空行熊猫

  5. 5

    如何使用r中“下一个”组的第一个值?

  6. 6

    打印数据集的 2 个连续数据条目的第一个和最后一个值,以绘制差异 - 在 R 中

  7. 7

    如何淡入第一个元素并延迟2秒然后淡入下一个元素?

  8. 8

    如何淡入第一个元素并延迟2秒然后淡入下一个元素?

  9. 9

    根据上一个和下一个值过滤熊猫数据框

  10. 10

    从第一个匹配条件获取结果,不考虑下一个匹配条件的结果

  11. 11

    根据条件从第一个df到另一个df的列值

  12. 12

    如何用R中每列的第一个值打印数据框的每个元素?

  13. 13

    用下一个迭代中的第一个重复的最后一个元素进行迭代

  14. 14

    尝试打印数组的第一个值时出现分段错误

  15. 15

    将每列中的第一个值乘以 MATLAB 中的下一个值

  16. 16

    匹配一个模式,然后转到下一个条件并打印详细信息

  17. 17

    R dplyr窗口函数,获取下一个满足某些条件的x窗口中的第一个值

  18. 18

    在满足熊猫数据帧中条件的数据帧位置处返回第一个值的位置

  19. 19

    当第一个输入值的长度为3时,如何关注下一个输入?

  20. 20

    将结果从一个“ for”循环迭代传递到下一个迭代?

  21. 21

    匹配条件后下一个awk打印?

  22. 22

    Pig如何传递第一个作业及其下一个作业中的数据

  23. 23

    Tensorflow 迭代器下一个值

  24. 24

    jQuery迭代上一个和下一个兄弟姐妹,直到第一个不匹配

  25. 25

    将数据从一个数据帧复制到另一个数据帧,然后根据值替换数据

  26. 26

    如何为每次迭代打印搜索序列的第一个结果?

  27. 27

    如何只影响第一个下一个特定的div

  28. 28

    MongoDB查找下一个文档或转到第一个

  29. 29

    查找数组中值的第一个/下一个位置

热门标签

归档