我正尝试为数据框内的数据子集创建订单号。对于新列(“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文件。除了让我们更容易帮助你,你可能会发现花时间去开发一个具有代表性的,最小化的例子往往是获得问题清晰度的好的第一步。 –