pandas重采样处理缺失数据

5 投票
1 回答
2076 浏览
提问于 2025-04-18 09:59

我正在使用pandas处理每月的数据,这些数据有一些缺失值。我希望能用重采样的方法来计算年度统计数据,但只针对那些没有缺失数据的年份。

这里有一些代码和输出示例:

import pandas as pd
import numpy as np
dates = pd.date_range(start = '1980-01', periods = 24,freq='M')
df = pd.DataFrame( [np.nan] * 10 + range(14), index = dates)

如果我进行重采样,得到的结果是:

In [18]: df.resample('A')
Out[18]: 
          0
1980-12-31  0.5
1981-12-31  7.5

我希望在1980年12月31这个索引上得到一个np.nan,因为那一年并没有每个月的数据。我尝试调整'how'这个参数,但没有成功。

我该怎么做才能实现这个呢?

1 个回答

2

我相信还有更好的方法,但在这种情况下,你可以使用:

df.resample('A', how=[np.mean, pd.Series.count, len])

然后删除所有那些 count != len 的行。

撰写回答