【问题标题】:Aggregation in pandas of consecutive valuespandas 中连续值的聚合
【发布时间】:2018-03-03 22:22:03
【问题描述】:

我想在数据框中指出温度是否降至 15°C 以下。如何更高效?

df['Was cold'] = df['Temperature']<15
df['Jacket needed'] = False
for i in range(len(df)-8):
    df.iloc[i].loc['Jacked needed'] = df.iloc[i:(i+8)]['Was cold'].any()

数据按时间排序,每条记录代表一个小时。 df['Was cold'] 表示温度是否低于 15°C。 df['Jacket needed'] 表示在接下来的 8 小时内至少有一个天气寒冷,如果我必须出去,我需要一件夹克。

【问题讨论】:

  • 最好解释一下最后 3 行代码在做什么。很明显它不仅仅是一个简单的布尔掩码,所以请解释一下你在做什么。为什么是 i + 8?
  • 现在好点了吗?
  • 可能有助于提供样本输入和所需的输出......在这种情况下,不完全遵循“在接下来的 8 小时内最后一个冷时”的含义。
  • 只是想知道你是否在追求类似df['jacket'] = (df['Temperature'] &lt; 15).replace({False: None}).ffill(limit=8)....
  • 我认为 OP 想要检查 df.Temperature 是否在 8 个时间步长的前向窗口中的任何位置下降到 15 以下。所以我猜实际上限制 7 的 bfill 会起作用吗? ://

标签: python pandas aggregation


【解决方案1】:

以下方法有用吗?

df['Jacket needed'] = df['Was cold'].rolling(window=8).sum().shift(-7) > 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 2016-05-20
    • 1970-01-01
    • 2021-12-05
    • 2021-02-19
    • 2018-03-26
    • 2020-05-03
    • 1970-01-01
    相关资源
    最近更新 更多