首页 > 解决方案 > 滚动条件 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,我将如何执行此操作?

标签: pythonpandasdataframedata-science

解决方案


我更喜欢在符号上加一点数学来做到这一点。

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

只要您不必担心整数溢出,就可以了。


推荐阅读