我想根据一列数据打上序号,上下相同数据打相同序号,不同数据序号+1,写了好久写不出来,有没有人教一下。
想要这样的效果
import pandas as pd
import random
random.seed(10)
df=pd.DataFrame(
{
"Time":pd.date_range("2022-9-1 15:25:55",periods=40,freq="s"),
"postiveVol":[random.randint(20,23) for _ in range(40)]
}
)
sno=[]
temp=df.postiveVol.tolist()
for i,v in enumerate(temp):
if i==0:
sno.append(1)
elif v==temp[i-1]:
sno.append(sno[-1])
else:
sno.append(sno[-1]+1)
df["序号"]=sno
print(df)
def cacu():
df1 = {"postiveVol":[1,3,3,23,32,34,34]}
my_list = df1["postiveVol"]
my_list.sort()
if(len(my_list) <= 0):
return
pre = my_list[0]
base = 1
output = []
for v in my_list:
if(pre != v):
base +=1
output.append(base)
pre = v
print(list(zip(my_list,output)))
[(1, 1), (3, 2), (3, 2), (23, 3), (32, 4), (34, 5), (34, 5)]
def cacu():
df1 = {"postiveVol":[1,3,3,23,32,34,34]}
my_list = df1["postiveVol"]
my_list.sort()
swap = dict(Counter(my_list))
#print(swap)
output = []
for v in swap:
base = 1
for in_v in range(1,swap[v]+1):
#print(in_v)
output.append(in_v)
print(list(zip(my_list,output)))
#print(output)
cacu()
[(1, 1), (3, 1), (3, 2), (23, 1), (32, 1), (34, 1), (34, 2)]
4 回答1.3k 阅读✓ 已解决
4 回答2k 阅读
2 回答839 阅读✓ 已解决
3 回答518 阅读✓ 已解决
2 回答811 阅读
2 回答591 阅读✓ 已解决
4 回答908 阅读
这样?
结果: