Pandas 通过比较列和行来创建子集顺序

Pandas 通过比较列和行来创建子集顺序,pandas,dataframe,operation,Pandas,Dataframe,Operation,我试图为数据帧中的数据子集创建订单号。对于一个新列(“罢工命令”),我想检查“option_expiration”列的值是否等于上一行“option_expiration”列的值。如果它不等于(即新子集),则将“罢工命令”值设置为1。如果等于,则将值设置为前一行“罢工命令”+1 我在Jupyter的错误消息底部得到的错误是KeyError:“标签[06/15/2001]不在[index]中” 例如: df = pandas.DataFrame([[2,1],[2,2],[2,3],[2,4],[

我试图为数据帧中的数据子集创建订单号。对于一个新列(“罢工命令”),我想检查“option_expiration”列的值是否等于上一行“option_expiration”列的值。如果它不等于(即新子集),则将“罢工命令”值设置为1。如果等于,则将值设置为前一行“罢工命令”+1

我在Jupyter的错误消息底部得到的错误是KeyError:“标签[06/15/2001]不在[index]中”

例如:

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)
def比较(i):
对于df.loc[i,“源_列”]中的i:
如果我你可以使用rank()

你得到

    source_column   strike_order
0   2               1
1   2               2
2   2               3
3   2               4
4   4               1
5   4               2
您可以使用rank()

你得到

    source_column   strike_order
0   2               1
1   2               2
2   2               3
3   2               4
4   4               1
5   4               2

它叫做累积计数,你可以直接这样做

df['new'] = df.groupby('source_column').cumcount()+1
源\所需列\输出新 0 2 1 1 1 2 2 2 2 2 3 3 3 2 4 4 4 4 1 1 5 4 2 2 在[453]中:
它叫做累积计数,你可以直接这样做

df['new'] = df.groupby('source_column').cumcount()+1
源\所需列\输出新 0 2 1 1 1 2 2 2 2 2 3 3 3 2 4 4 4 4 1 1 5 4 2 2 在[453]中:
如果您可以发布更多关于您的问题的数据,可能会有所帮助!输入数据文件和python脚本现在通过Dropbox的链接附加。如果您发布具有代表性的示例数据,而不是发布到zip文件的链接,您可能会更快地获得更好的帮助。除了让我们更容易为您提供帮助之外,您可能会发现这需要花费时间来开发一个具有代表性的、最少的示例通常是澄清问题的良好第一步。公正的评论,更新。如果您可以发布更多关于您的问题的数据,可能会有所帮助!输入数据文件和python脚本,现在通过到Dropbox的链接附加。如果您发布具有代表性的示例数据,而不是发布ng一个zip文件的链接。除了让我们更容易帮助您之外,您可能会发现花时间开发一个具有代表性的、最少的示例通常是澄清您的问题的良好第一步。公正评论,更新。