python-在第一次匹配熊猫时间序列数据后忽略np.where
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-在第一次匹配熊猫时间序列数据后忽略np.where,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3482字,纯文字阅读大概需要5分钟。
内容图文
按照下面的示例,我需要让我的代码忽略第一次匹配时间序列数据后的np.where.
因此,在2014-03-04 14:00:00行上,np.where在test_output列上给出了1.0,并且正如预期的那样,在下一行上也给出了1.0.我只希望这一次触发一次.我将在问题的末尾显示所需的输出.
感谢您查看问题.
测试生成的数据帧:
df = pd.DataFrame(index=pd.date_range(start='2014-03-04 09:00:00', end='2014-03-04 16:15:00', freq='1h') + pd.date_range(start='2014-03-05 09:00:00', end='2014-03-05 16:15:00', freq='1h'), data={'test_1': np.nan})
df['test_1'][5:16]=1.0
df['test_output'] = np.where(df['test_1'] == 1.0,1.0,np.nan);
df
test_1 test_output
2014-03-04 09:00:00 NaN NaN
2014-03-04 10:00:00 NaN NaN
2014-03-04 11:00:00 NaN NaN
2014-03-04 12:00:00 NaN NaN
2014-03-04 13:00:00 NaN NaN
2014-03-04 14:00:00 1.0 1.0
2014-03-04 15:00:00 NaN NaN
2014-03-04 16:00:00 1.0 1.0
2014-03-05 09:00:00 1.0 1.0
这是所需的输出:
test_1 test_output
2014-03-04 09:00:00 NaN NaN
2014-03-04 10:00:00 NaN NaN
2014-03-04 11:00:00 NaN NaN
2014-03-04 12:00:00 NaN NaN
2014-03-04 13:00:00 NaN NaN
2014-03-04 14:00:00 1.0 1.0
2014-03-04 15:00:00 NaN NaN
2014-03-04 16:00:00 1.0 NaN
2014-03-05 09:00:00 1.0 NaN
解决方法:
在掩码上使用first_valid_index设置第一行:
In [30]:
df.loc[df[df['test_1'] == 1.0].first_valid_index(),'test_output'] = 1.0
df
Out[30]:
test_1 test_output
2014-03-04 09:00:00 NaN NaN
2014-03-04 10:00:00 NaN NaN
2014-03-04 11:00:00 NaN NaN
2014-03-04 12:00:00 NaN NaN
2014-03-04 13:00:00 NaN NaN
2014-03-04 14:00:00 1.0 1.0
2014-03-04 15:00:00 1.0 NaN
2014-03-04 16:00:00 1.0 NaN
2014-03-05 09:00:00 1.0 NaN
2014-03-05 10:00:00 1.0 NaN
2014-03-05 11:00:00 1.0 NaN
2014-03-05 12:00:00 1.0 NaN
2014-03-05 13:00:00 1.0 NaN
2014-03-05 14:00:00 1.0 NaN
2014-03-05 15:00:00 1.0 NaN
2014-03-05 16:00:00 1.0 NaN
分解以上内容:
In [32]:
df['test_1'] == 1.0
Out[32]:
2014-03-04 09:00:00 False
2014-03-04 10:00:00 False
2014-03-04 11:00:00 False
2014-03-04 12:00:00 False
2014-03-04 13:00:00 False
2014-03-04 14:00:00 True
2014-03-04 15:00:00 True
2014-03-04 16:00:00 True
2014-03-05 09:00:00 True
2014-03-05 10:00:00 True
2014-03-05 11:00:00 True
2014-03-05 12:00:00 True
2014-03-05 13:00:00 True
2014-03-05 14:00:00 True
2014-03-05 15:00:00 True
2014-03-05 16:00:00 True
Freq: BH, Name: test_1, dtype: bool
In [33]:
df[df['test_1'] == 1.0].first_valid_index()
Out[33]:
Timestamp('2014-03-04 14:00:00', offset='BH')
您可以使用np.where通过再次屏蔽df来做到这一点,以便通过将np数组与1.0进行比较来生成条件为假的NaN:
In [41]:
df.loc[df[np.where(df['test_1'] == 1.0, 1.0, 0) == 1].first_valid_index(), 'test_output'] = 1.0
df
Out[41]:
test_1 test_output
2014-03-04 09:00:00 NaN NaN
2014-03-04 10:00:00 NaN NaN
2014-03-04 11:00:00 NaN NaN
2014-03-04 12:00:00 NaN NaN
2014-03-04 13:00:00 NaN NaN
2014-03-04 14:00:00 1.0 1.0
2014-03-04 15:00:00 1.0 NaN
2014-03-04 16:00:00 1.0 NaN
2014-03-05 09:00:00 1.0 NaN
2014-03-05 10:00:00 1.0 NaN
2014-03-05 11:00:00 1.0 NaN
2014-03-05 12:00:00 1.0 NaN
2014-03-05 13:00:00 1.0 NaN
2014-03-05 14:00:00 1.0 NaN
2014-03-05 15:00:00 1.0 NaN
2014-03-05 16:00:00 1.0 NaN
内容总结
以上是互联网集市为您收集整理的python-在第一次匹配熊猫时间序列数据后忽略np.where全部内容,希望文章能够帮你解决python-在第一次匹配熊猫时间序列数据后忽略np.where所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。