python熊猫在过去一个月中的所有日子都重新采样

我有一个包含一些数据和NaN的csv文件。假设:

Date;A;B;C;D;E
2/1/1982;N/A;0.20;0.00;N/A;0.00
2/2/1982;N/A;0.00;0.00;N/A;0.00
2/3/1982;N/A;0.00;0.00;N/A;0.00
2/4/1982;N/A;0.00;0.00;N/A;0.00
2/5/1982;N/A;0.00;0.00;N/A;0.00
2/6/1982;N/A;0.00;0.00;N/A;0.00
2/7/1982;N/A;0.00;0.00;N/A;0.00
2/8/1982;N/A;0.00;0.00;N/A;0.00
2/9/1982;N/A;0.00;0.00;N/A;0.00
...
2011-01-31;3.00;0.00;0.00;N/A;0.00

我必须计算全年的平均值,但要计算同一个月的平均值,并且不包括NaN大于7的月份。另外,我想创建一个每日蒙版,以便每天计算一些功能。

这就是我的工作

1)读取数据帧

dfobs = pd.read_csv(file,sep=';',index_col=0,header=0,parse_dates=True)

2)以月份为单位计算NaN:

dfobs_na = ~dfobs.isnull()
obs_vals_bymonth_na = dfobs.isnull().groupby([dfobs.index.year,dfobs.index.month]).sum()

3)创建掩码以排除NaN大于7的月份

mask = obs_vals_bymonth_na <= na_filter

4)移回日期时间索引:

mask.index.names = ['year','month']
mask = mask.reset_index()
mask.index = pd.to_datetime(mask['year'].astype(str) +
                                    '-' + mask['month'].astype(str))

5)我尝试对广告的每日规模进行重新采样,以创建另一个可以在其他功能中使用的蒙版:

res_mask = mask.resample('MS').fillna(method='ffill')
res_mask = mask.resample('D').fillna(method='ffill')

问题来了:观测数据为10592,基本上是从1982-02-01 00:00:00到2011-01-31 00:00:00之间的所有日期。 重新采样时,我得到10562。基本上,我没有2011年1月的全天。

该如何处理并在上个月重新正确采样?

感谢您的任何帮助

Diedro

zhangyangwokao 回答:python熊猫在过去一个月中的所有日子都重新采样

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2948930.html

大家都在问