我正嘗試爲數據框內的數據子集創建訂單號。對於新列(「strike_order」),我想檢查「option_expiration」列的值是否等於上述行中的「option_expiration」列的值,如果不等於(即新子集)設置值「 strike_order「設置爲1.如果相等,則將值設置爲上一行」strike_order「+1。通過在列和行之間進行比較創建子集訂單
Jupyter中錯誤消息底部的錯誤是KeyError:'label [06/15/2001] is未在[索引]」
實施例:
df = pandas.DataFrame([[2,1],[2,2],[2,3],[2,4],[4,1],[4,2]],columns=
["source_column","desired_output"])#, index = ["1","2","3","4","5","5"])
df
source_column desired_output
0 2 1
1 2 2
2 2 3
3 2 4
4 4 1
5 4 2
即,當源列改變值時,它觸發從1新的計數在輸出列
我的代碼如下:
def compare(i):
for i in df.loc[i,"source_column"]:
if i <1 :
return 1 #populates first row as 1
elif df.loc[i,"source_column"] == df.loc[i-
1,"source_column"]:
return compare(i-1) +1
else:
return 1
df["desired_output"]=df["source_column"].apply(compare)
如果你能發佈更多的數據在您的問題可以幫助! – ileadall42
輸入數據文件和python腳本現在通過鏈接連接到dropbox –
如果您發佈帶有代表性示例數據的[MCVE](https://stackoverflow.com/help/mcve),您可能會得到更快的幫助,而不是發佈一個鏈接到一個zip文件。除了讓我們更容易幫助你,你可能會發現花時間去開發一個具有代表性的,最小化的例子往往是獲得問題清晰度的好的第一步。 –