求助大佬!
python代码实现
根据交易单号和ID;对金额和数量去重,并且税补求和
我觉得吧,你这个直接用excel里面的函数就好了而且更加快
excel的话,嵌套这一块这么来啊?大佬能指点下么
@我的小白:
@我的小白: 第一步先把 交易号和id复制下来一行,然后用用excel有个删除重复项的东西,然后用sum if 就可以了
@小小咸鱼YwY: 我这数据量比较大哦,几十万的数据。需要的是同时满足去重、求和。想实现自动化功能
@我的小白: 搜嘎,那也简单
@小小咸鱼YwY: 那怎么来呢?代码能力弱的我~
@我的小白:
import pandas as pd
#首先类型要全是文本,自己格式化一下
data = pd.read_excel("你的表.xlsx",keep_default_na=False).values
#
x = {}
info_set = set()
for info in data:
id = "######".join(info[0,3])
if info.get(id):
x[id] = x[id]+int(info[4])
else:
x[id] = int(info[4])
info_set.add(id)
new_list_2 = []
for a in info_set:
info = a.split("######")
items ={
"交易单号": info[0],
"ID": info[1],
"金额": info[2],
"数量": info[3],
"税补":x[a]
}
new_list_2.append(items)
new_list_3 = [list(info_dict.values()) for info_dict in new_list_2]
df = pd.DataFrame(new_list_3, columns=list(new_list_2[0].keys()))
df.to_excel("你的表.xlsx")
df.save()
@小小咸鱼YwY: 感谢感谢
demo
import pandas as pd
"""
a b c d e
11 11 3 2 6
11 11 3 2 6
12 12 1 1 2
13 13 2.5 1 7
14 14 2 6 6
14 14 2 6 6
"""
data = {
"a":[11,11,12,13,14,14],
"b":[11,11,12,13,14,14],
"c":[3,3,1,2.5,2,2],
"d":[2,2,1,1,6,6],
"e":[6,6,2,7,6,6],
}
df = pd.DataFrame(data)
print(df)
# 结合 a、b、c、d 列去重
df_2 = df.drop_duplicates(subset=['a','b','c','d'],keep='first')
print(df_2)
# 根据 a 列分组求和
res = df_2.groupby('a')['e'].sum()
print(res)
"交易单号" 和 "ID" ,你也可以合并再生成一列;具体效果和使用,你视情况调整