【问题标题】:Pandas resample without dropping nan valuesPandas 重新采样而不丢弃 nan 值
【发布时间】:2021-09-26 05:41:22
【问题描述】:

我有一个带有日期时间索引的每日测量数据集。我试图通过仅获取每月第一个可用日期的数据来将其重新采样为每月。

数据框df:

2010-10-04 Nan 4
2010-10-05 3   5
2010-10-06 5   2

我尝试过使用

df.resample("MS").first()

但这最终给了我

2010-10-01 3   4

而不是

2010-10-04 Nan   4

我可以避免删除 Nan 值吗?我在文档中找不到合适的参数。

【问题讨论】:

  • 为什么需要重采样?你能详细说明一下吗?
  • 你能给个minimal reproducible example吗?我认为我明白你在问什么,但我不确定。

标签: python pandas


【解决方案1】:

IIUC,您需要数据集中每个月的第一行。我尝试通过添加更多月份和不同年份来详细说明您的示例。

假设数据按日期排序,请尝试按 month 分组并获取每个月的 head(1)

#               A    B
# 2010-10-04  NaN  4.0  <----
# 2010-10-05  3.0  5.0
# 2010-10-06  5.0  2.0
# 2010-09-05  NaN  NaN  <----
# 2010-09-05  3.0  5.0
# 2010-09-06  5.0  2.0
# 2019-10-04  7.0  7.0  <----
# 2019-10-05  3.0  5.0
# 2019-10-06  5.0  2.0

df.groupby(pd.Grouper(freq="M")).head(1)
              A    B
2010-09-05  NaN  NaN
2010-10-04  NaN  4.0
2019-10-04  7.0  7.0

【讨论】:

  • 我认为这不是我们想要的输出
  • 让我删除并检查一下。
  • 已修复。感谢您的提醒。
  • 我对 resample 和 groupby 感到困惑,无法得到我想要的结果。但这行得通。
猜你喜欢
  • 2016-01-26
  • 2021-08-21
  • 2022-01-20
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 2018-03-26
相关资源
最近更新 更多