【问题标题】:Python Pandas Upsampling - Complex Issue Preserving Some np.NansPython Pandas 上采样 - 保留一些 np.Nans 的复杂问题
【发布时间】:2018-08-06 12:54:07
【问题描述】:

我有一个如下所示的数据框:

              A        B

2010-01-01    6.5     3.2
2010-02-01    7.2     np.Nan
2010-03-01    8.1     np.Nan
2010-04-01    4.3     5.6
2010-05-01    3.7     6.1

我想上采样到天数并转发填充值。但在df['B'] 的情况下,我希望前向填充到np.Nan 值开始的stop。我正在寻找以下内容:

               A       B
2010-01-01    6.5     3.2
2010-01-02    6.5     3.2
 ....
2010-01-31    6.5     3.2
2010-02-01    7.2     np.Nan
2010-02-02    7.2     np.Nan
 ....   
2010-02-28    7.2     np.Nan
2010-03-01    8.1     np.Nan
2010-03-02    8.1     np.Nan
 ....
2010-03-31    8.1     np.Nan
2010-04-01    4.3     5.6
2010-04-02    4.3     5.6
 ....
2010-04-30    4.3     5.6
2010-05-01    3.7     6.1
2010-05-02    3.7     6.1
 ....
2010-05-31    3.7     6.1

如果我应用以下代码:

df['A'] = df['A'].resample('D').ffill()
df['B'] = df['B'].resample('D').ffill()

我的结果如下所示:

               A       B
2010-01-01    6.5     3.2
2010-01-02    6.5     3.2
 ....
2010-01-31    6.5     3.2
2010-02-01    7.2     3.2
2010-02-02    7.2     3.2
 ....   
2010-02-28    7.2     3.2
2010-03-01    8.1     3.2
2010-03-02    8.1     3.2
 ....
2010-03-31    8.1     3.2
2010-04-01    4.3     5.6
2010-04-02    4.3     5.6
 ....
2010-04-30    4.3     5.6
2010-05-01    3.7     6.1
2010-05-02    3.7     6.1
 ....
2010-05-31    3.7     6.1

df['B'] 填充了从2010-01-012010-03-313.2 值,而不是在2010-01-31 处“停止”并保留从2010-02-012010-03-31np.Nan

我知道我可以使用非常混乱的迭代过程来做到这一点。但是有没有更简单的方法可以做到这一点,我没有看到?

谢谢。

【问题讨论】:

标签: python pandas time-series resampling


【解决方案1】:

您可以将您的nan 替换为另一个值,在我们resample 之后等待replace 回来

df=df.fillna('replaceNAN')
s=df.resample('D').ffill().replace('replaceNAN',np.nan)
s.loc[s.isnull().any(1)]
Out[456]: 
              A    B
2010-02-01  7.2  NaN
2010-02-02  7.2  NaN
2010-02-03  7.2  NaN
2010-02-04  7.2  NaN
2010-02-05  7.2  NaN
2010-02-06  7.2  NaN
2010-02-07  7.2  NaN
2010-02-08  7.2  NaN
2010-02-09  7.2  NaN
2010-02-10  7.2  NaN
2010-02-11  7.2  NaN
2010-02-12  7.2  NaN
2010-02-13  7.2  NaN
2010-02-14  7.2  NaN
2010-02-15  7.2  NaN
2010-02-16  7.2  NaN
2010-02-17  7.2  NaN
2010-02-18  7.2  NaN
2010-02-19  7.2  NaN
2010-02-20  7.2  NaN
2010-02-21  7.2  NaN
2010-02-22  7.2  NaN
2010-02-23  7.2  NaN
2010-02-24  7.2  NaN
2010-02-25  7.2  NaN
2010-02-26  7.2  NaN
2010-02-27  7.2  NaN
2010-02-28  7.2  NaN
2010-03-01  8.1  NaN
2010-03-02  8.1  NaN
2010-03-03  8.1  NaN
2010-03-04  8.1  NaN
2010-03-05  8.1  NaN
2010-03-06  8.1  NaN
2010-03-07  8.1  NaN
2010-03-08  8.1  NaN
2010-03-09  8.1  NaN
2010-03-10  8.1  NaN
2010-03-11  8.1  NaN
2010-03-12  8.1  NaN
2010-03-13  8.1  NaN
2010-03-14  8.1  NaN
2010-03-15  8.1  NaN
2010-03-16  8.1  NaN
2010-03-17  8.1  NaN
2010-03-18  8.1  NaN
2010-03-19  8.1  NaN
2010-03-20  8.1  NaN
2010-03-21  8.1  NaN
2010-03-22  8.1  NaN
2010-03-23  8.1  NaN
2010-03-24  8.1  NaN
2010-03-25  8.1  NaN
2010-03-26  8.1  NaN
2010-03-27  8.1  NaN
2010-03-28  8.1  NaN
2010-03-29  8.1  NaN
2010-03-30  8.1  NaN
2010-03-31  8.1  NaN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多