簡體   English   中英

滾動條件熊貓DataFrame列

[英]Rolling Conditional Pandas DataFrame Column

如何寫滾動條件應用於熊貓中的某列?

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

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM