【问题标题】:How to compare elements of one dataframe to another?如何将一个数据框的元素与另一个数据框的元素进行比较?
【发布时间】:2021-12-19 19:00:32
【问题描述】:

我有一个名为 PORResult 的数据框,它包含每日温度,其中行是年,每列是一天(121 行 x 365 列)。我还有一个数组,称为Percentile_90,它包含每天的阈值温度(长度=365)。对于PORResult 数据框中每年的每一天,我想知道那一天的值是否高于Percentile_90 数组中那一天的值。我想将其结果存储在一个名为Count(121 行 x 365 列)的新数据框中。首先,Count 数据框全为零,但如果 PORResult 中的每日值大于 Percentile_90 中的每日值。我想将 Count 中的每日值更改为 1。

这就是我要开始的:

for i in range(len(PORResult)):
    if PORResult.loc[i] > Percentile_90[i]:
        CountResult[i]+=1

但是当我尝试这个时,我得到 KeyError:0。我还能尝试什么?

【问题讨论】:

  • 一方面,如果您使用的是数字索引,则需要iloc 而不是loc,后者用于命名索引。另一方面,这应该可以通过广播来完成,因此您不必遍历数据帧,但它有助于查看输入 df 和数组的小样本以及您的预期输出以生成 minimal reproducible example以便我们更好地理解和复制您的问题。另见How to make good pandas examples

标签: python pandas dataframe numpy weather


【解决方案1】:

(已编辑:) 我认为取决于您的数据结构

CountResult = PORResult.gt(Percentile_90,axis=0).astype(int)

应该可以解决问题。通常,pandas 中提供的工具集就足够了,for-循环数据帧是不必要的(而且效率非常低)。

【讨论】:

  • 他们声明他们希望输出是“121 行 x 365 列”的零和一,而不仅仅是计数
  • @G.Anderson 已修复(我认为)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多