Pandas 通过比较列和行来创建子集顺序
我试图为数据帧中的数据子集创建订单号。对于一个新列(“罢工命令”),我想检查“option_expiration”列的值是否等于上一行“option_expiration”列的值。如果它不等于(即新子集),则将“罢工命令”值设置为1。如果等于,则将值设置为前一行“罢工命令”+1 我在Jupyter的错误消息底部得到的错误是KeyError:“标签[06/15/2001]不在[index]中” 例如: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],[
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文件的链接。除了让我们更容易帮助您之外,您可能会发现花时间开发一个具有代表性的、最少的示例通常是澄清您的问题的良好第一步。公正评论,更新。