我想複製類似於Alteryx中的「多行公式」工具的東西。我正在閱讀一個csv文件,並希望能夠在列表中設置一個值,如果同一個測試列中的另一行的值爲true。基於當前行上方或下方第n行的條件 - Python
樣本數據
**Country**
China
India
Brazil
Indonesia
當它遍歷包含巴西行,「Y」應附加到新的名單,因爲中國是上面兩行。其餘的應該附加「N」。
import pandas as pd
csv_in = pd.read_csv('C:/sample.csv')
kind = []
for row in csv_in['Country']:
if ***two rows above this row*** == 'China':
kind.append('Y')
elif ***one row below this row*** == 'Canada':
kind.append('Y')
else:
kind.append("N")
csv_in['Result'] = kind
我無法找到任何特定於此問題的內容。任何幫助,將不勝感激!
編輯:我意識到我需要做的更多一點,除了我最初提出的問題。
for row in csv_in['Country']:
if 'hina' in ***two rows above this row***:
kind.append('Y')
elif ***one row below this row***.startswith('Can'):
kind.append('X')
else:
kind.append("N")
它以某種方式讀取笨拙遍歷可轉位結構像熊貓數據幀,然後使用偏移了兩個特殊情況作爲條件來構建元件明智的布爾序列具有相同的長度和隱式1到1兩個「列表」中的位置之間的映射。根據數據幀「國家」列長度的長度,一次性準備一個Falsy或'N'列表,並找到數據幀的特殊情況索引,並分別將以下2行和1以上的偏移量設置爲True或'y'。 ...現在@root已經放入答案;-) – Dilettant