[英]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.