python去重复的数据_Python-计算重复数据第几次出现

这个问题应该算是挺常见的,所以记录下。

Q:数据已经按顺序排好了,有一列订单号数据是重复的,计算该订单号是第几次出现。

=countif($a$1:a1,a1)

然后下拉填充数据即可,但是在Excel中这样做的话计算量非常大,因为这个任务是每个月算一次,每月大概15W条记录,电脑跑起来太久了。今天一下要算3个月的,好吧,拿出python来跑。

先讲讲思路

这个是在《数据科学入门》这门书上看到的,当时实现的功能计算单词总共出现了多少次,即统计词频。这个对python来说特别简单,调用库一下就得出结果了。

但这本书很讲究从0开始,所以用的方法很基础

from collections import defaultdict

word_count=defaultdict(int) #int()生成0

for word in document:

word_count[word]+=1

所以字典word_count会一个一个的加上去,这不就是我们需要的第几次出现嘛~所以改进一下。

使用pandas,将数据变成dataframe形式

from collections import defaultdict

import pandas as pd

order_count = defaultdict(int)

def num(order):

order_count[order]+=1

return order_count[order]

def count_order_num():

#读取数据,从Excel读取。

path = r' '

data = pd.read_excel(path, sheetname='Sheet0', header=0)

#按时间排序先

data.sort_values('抽检时间', inplace=True)

#计算几次出现

data['第几次出现'] = data.apply(lambda x:num(x['下单编号']) , axis=1 )

print(data)

# 保存到excel

save_path = r' '

write = pd.ExcelWriter(save_path)

data.to_excel(write, sheet_name='Sheet1', header=True, index=False)

write.save()

print('ok')

if __name__ == '__main__':

count_order_num()

用字典order_count记录下单编号,每次来一个就+1,然后返回当前的统计到的数字,就是该下单编号第几次出现。

还有Office2016安装真的是很烦人,这几天Excel出了问题删掉重装,结果安装报错错误代码:30180-4

试了好久还是没装上,烦人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值