python - 如何根据前一行的值标记数据?
问题描述
如果当前值高于前一行,我想将数据标记为“1”,否则标记为“0”。
假设我有这个 DataFrame:
df = pd.DataFrame({'date': [1,2,3,4,5], 'price': [50.125, 45.25, 65.857, 100.956, 77.4152]})
我希望输出好像 DataFrame 是这样构造的:
df = pd.DataFrame({'date': [1,2,3,4,5], 'price': [50.125, 45.25, 65.857, 100.956, 77.4152], 'label':[0, 0, 1, 1, 0]})
*我不知道如何发布 DataFrame
这些代码是我的尝试:
df['label'] = 0
i = 0
for price in df['price']:
i = i+1
if price in i > price: #---> right now I am stuck here. i=It says argument of type 'int' is not iterable
df.append['label', 1]
elif price in i <= price:
df.append['label', 0]
我认为我的代码中还有其他逻辑错误。我究竟做错了什么?
解决方案
Series.ge
通过( >=
)创建布尔掩码,Series.shift
并转换为整数以True/False
进行1/0
映射Series.view
:
df['label'] = df['price'].ge(df['price'].shift()).view('i1')
或通过Series.astype
:
df['label'] = df['price'].ge(df['price'].shift()).astype(int)
推荐阅读
- vue.js - 删除列表中的项目时,我希望该项目在淡出时保持原位
- flutter - 如何使用提供程序检测数组元素的变化?
- reactjs - 当状态改变时,对文本字段做出反应 onChange 更新整个组件
- javascript - 如何只编写纯 JS(没有 jquery 或任何东西)代码来从外部“.js”文件中读取 JSON 数据?
- php - PHP left join 未能加入匹配记录
- python-3.x - 根据表示连续两个交易日之间的日历日差的索引创建列
- mongodb - MongoDb Atlas:UnhandledPromiseRejectionWarning - MongooseTimeoutError
- c - 为什么我的 XOR 操作只在我的文本文件的一半上实现
- javascript - 如何映射我从数据库中获得的元素?
- qt - 支持 Qt5 的 MarbleWidget - 示例代码不再正确退出