python - 滚动条件 Pandas DataFrame 列
问题描述
我如何能够编写滚动条件应用于熊猫中的列?
import pandas as pd
import numpy as np
lst = np.random.random_integers(low = -10, high = 10, size = 10)
lst2 = np.random.random_integers(low = -10, high = 10, size = 10)
#lst = [ -2 10 -10 -6 4 2 -5 4 9 3]
#lst2 = [-7 5 6 -4 7 1 -4 -6 -1 -4]
df = pandas.DataFrame({'a' : lst, 'b' : lst2})
给定一个数据框,即“df”,我想创建一个“C”列,这样如果 a > 0 和 b > 0 中的元素将显示 True,如果 a < 0 和 b < 0 则显示 False。
对于不满足此条件的行,我想将上一行中的条目滚动到当前行(即如果上一行具有值'True'但不满足指定条件,它应该具有值'True' .)
我怎样才能做到这一点?
后续问题:对于条件 a > 1 和 b > 1 返回 True 或 a < -1 和 b < -1 返回 False,我将如何执行此操作?
解决方案
我更喜欢在符号上加一点数学来做到这一点。
i = np.sign(df.a)
j = np.sign(df.b)
i = i.mask(i != j).ffill()
i >= 0
# for your `lst` and `lst2` input
0 False
1 True
2 True
3 False
4 True
5 True
6 False
7 False
8 False
9 False
Name: a, dtype: bool
只要您不必担心整数溢出,就可以了。
推荐阅读
- kubernetes - 如何更改 K8S 默认服务帐号权限?
- python - 为什么图像没有保存在 django 的媒体目录中?
- android - 如何每 24 小时显示一个 AlertDialog?
- javascript - 如何使用 JS 将对象列表转换为指定格式的字符串
- python - 连接 MYSQL 和 Python 时出现 MYSQL.CONNECTOR 问题
- javascript - 我如何合并两个模式
- vue.js - Vuetify:v-datepicker 不显示每个月的所有天数
- visual-studio-code - VS Code 中 Jupyter Notebook 的“内核因退出代码 1 而死”错误
- c++ - C++ 数组错误:“可变大小的对象可能未初始化”
- javascript - 如何在实时服务器而不是本地主机上使用 Tornado 实现 WebSocket