滚动条件熊猫DataFrame列

时间:2018-07-09 14:36:10

标签: python pandas dataframe data-science

我怎样才能写出适用于熊猫列的滚动条件?

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。 / p>

对于不满足此条件的行,我想将上一行中的条目滚动到当前行中(即,如果上一行具有值“ True”,但不满足在特定条件下,其值应为“ True”。)

我该怎么做?

后续问题:如果条件a> 1和b> 1返回True或a <-1和b <-1返回False,我该怎么做?

2 个答案:

答案 0 :(得分:2)

我喜欢在数学上加一点数学符号。

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

只要您不必担心整数溢出,就可以正常工作。

答案 1 :(得分:1)

i = np.sign(df.a)
j = np.sign(df.b)

i.mask(i != j).ffill().ge(0)