python - 根据列表中的条件滞后一个值 - python
问题描述
我有一个格式如下的表格:
testdf = pd.DataFrame({"date":['2016-07-01','2016-07-02','2016-07-03','2016-07-04'],"freq": [10,15,20,13]})
testdf = testdf.set_index("date")
lst = ['2016-07-03', '2016-07-13']
如果索引在 lst 中(最好使用 pandas apply 函数),我想将 freq 值滞后于之前的值。
例如,在此示例中,“2016-07-03”的频率值应替换为 15,因为日期位于“lst”中,因此我想要前一天的值。
提前感谢任何帮助!
解决方案
使用pd.Index.isin
和ffill
:
testdf.freq.mask(testdf.index.isin(lst)).ffill().to_frame()
freq
date
2016-07-01 10.0
2016-07-02 15.0
2016-07-03 15.0
2016-07-04 13.0
推荐阅读
- karate - 使用 post soap 服务的更大数据加载过程的空手道框架
- scala - 如何使用scala play json阅读器解析key是可变的json?
- python - Python合并列表间隔
- r - R函数不返回修改后的数据表
- javascript - 如何在使用 AnimatePresence 包装的 Next.js 页面中导航并滚动到具有 ID 的元素
- c# - 如何增加四元数的灵敏度?C#
- python - 将 NaN 分配给基于另一列的列
- java - 如何在 Java 中编写一个非常简单的用户登录?
- c++ - 出现错误:'operator<<' 不匹配(操作数类型为 'std::basic_ostream
' 和 'Complex') 尽管重载了 << 运算符 - profiling - 应用程序瓶颈测试软件