表格中找出相同数据并修改
近期在 POC 时候遇到一个问题点,在这里分享给大家
需求:
客户需要将匹配好的表格数据(如下)导入到 ERP 系统中进行审核
但是该系统审核的时候存在这样的一个问题,就是导入的表格数据中不可以出现相同的交易时间,由于导入表是由网银系统导出的若干张表格匹配合并而来,会有概率性出现 2 笔交易时间相同的情况,所以当出现相同时间时,需要将其中一条的交易时间 +1 秒。
思路:
我们要找出导入表中的相同数据,那么如何去找呢?
我们知道表格数据去重是通过drop_duplicates
方式去实现,该方法有个属性就是data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)
keep=’first’表示保留第一次出现的重复行,是默认值。keep 取值为 False,表示去除所有重复行。
那么处理方式就是
1、先将 df 做一次去重处理,保留第一次出现的重复值为 df_b
2、再将 df 做一次去重处理,不保留任何重复值为 df_a
3、将两次的去重的数据进行合并,这样生成的 df 就只有原先重复的部分不再重复了。
4、最后再次将生成的 df 进行去重,不保留任何重复值,生成的就是我们需要找到的原始 df 的重复数据啦。
5、随后将重复数据的时间通过 map 的方式进行 +1 秒操作,随后按照时间排序,这样导入的数据就不会有问题啦。
代码如下
df_b = df.drop_duplicates(subset=['交易时间'])
if len(df_b)!=len(df):
df_a = df.drop_duplicates(subset=['交易时间'],keep=False)
df7 = pd.concat([df_a,df_b]).drop_duplicates(keep=False)
df7['交易时间'] = df7['交易时间'].map(lambda x:x[0:-1]+str(int(x[-1])+1))
df7 = pd.concat([df_b,df7])
df7 = df7.sort_values(by='交易时间')
print('有重复时间')
else:
print('没有重复时间')
本来想找个直接可以找出 df 重复值并修改的方案,但是木有找到就只好通过去重的方法去变相实现了。
如果有其他
+1S
的方式欢迎讨论。
这个必须点赞👍
嗯 这里没有考虑周全,零时做的一个 还需要优化
此语句有问题,如果
x[-1]=9
呢?首先建立一个空列表 my_list,遍历“交易时间”列表 time_list,判断当前字符串是否存在于 my_list,如果存在说明当前字符串重复,进行“+1s”操作,然后添加到 my_list,最后使用 my_list 替换掉 time_list 即可