簡體   English   中英

Pandas 將每日數據聚合到每月時間序列

[英]Pandas Aggregate Daily Data to Monthly Timeseries

我有一個看起來像這樣的時間序列(下圖)

我想每月對它重新采樣,所以它有 2019-10 等於 10 月所有值的平均值,11 月是 11 月所有 PTS 值的平均值,等等。

但是,當我使用 pd.resample('M').mean() 方法時,如果每個月的最后一天沒有值,它會在我的數據框中填充一個 Nan。 我該如何解決這個問題?

Date        PTS    
2019-10-23  14.0
2019-10-26  14.0
2019-10-27   8.0
2019-10-29  29.0
2019-10-31  17.0
2019-11-03  12.0
2019-11-05   2.0
2019-11-07  15.0
2019-11-08   7.0
2019-11-14  16.0
2019-11-16  12.0
2019-11-20  22.0
2019-11-22   9.0
2019-11-23  20.0
2019-11-25  18.0```

這行得通嗎?

pd.resample('M').mean().dropna()

你有代碼示例嗎? 這有效:

import pandas as pd
import numpy as np

rng = np.random.default_rng()
days = np.arange(31)

data = pd.DataFrame({"dates": np.datetime64("2019-03-01") + rng.choice(days, 60),
                     "values": rng.integers(0, 60, size=60)})

data.set_index("dates", inplace=True)

# Set the last day to null.
data.loc["2019-03-31"] = np.nan

# This works
data.resample("M").mean()

它也適用於不完整的月份:

incomplete_days = np.arange(10)

data = pd.DataFrame({"dates": np.datetime64("2019-03-01") + rng.choice(incomplete_days, 10),
                     "values": rng.integers(0, 60, size=10)})

data.set_index("dates", inplace=True)

data.resample("M").mean()

您應該更徹底地檢查您的數據和類型,以防您收到的 NaN 表明存在更緊迫的問題。

為什么不直接刪除 NaN 值?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM