簡體   English   中英

條件滿足時取 dataframe 中上一行的值

[英]Take previous row's value in dataframe when condition meets

我有一個數據農場讓我們這樣說:

| ColumnX        |
| -------------- |
| Hi             |
| + Open         |
| How are you    |
| NAN            |
| Something      |
| something      |
| HEY            |
| + Open         |

現在我需要 go 通過行檢查它們的值。 如果行值為“+ Open”,則 select 將一行值放入列表中。 到目前為止,這就是我所做的,但我不知道如何獲取以前的值-

ilist=[]
for i in df["ColumnX"]:
    if i == '+ Open':
        ilist.append(i)

為值創建掩碼,通過 -1 移動掩碼,然后用 False 填充 NA,這基本上是最后一行,然后使用此掩碼獲取值,最后從值中創建列表:

>>> df.loc[df['ColumnX'].eq('+ Open').shift(-1).fillna(False) ,'ColumnX'].to_list()

# Output:
['Hi', 'HEY']

也許是這樣的:

ilist=[]
for i in range(0,len(df["ColumnX"])):
    if df["ColumnX"][i] == '+ Open':
        ilist.append(df["ColumnX"][i-1])

您可以使用enumerate並通過索引訪問先前的值:

import pandas as pd

df = pd.DataFrame(["Hi", "+ Open", "How are you", "NAN", "Something", "Something", "HEY","+ Open"], columns=["ColumnX"])

ilist = []

for i, value in enumerate(df["ColumnX"]):
    if value == "+ Open" and i>0: # check if i>0 to prevent out of index error
        ilist.append(df.at[i-1, "ColumnX"])
        
print(ilist)

出去:

['Hi', 'HEY']

暫無
暫無

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

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