python用几行代码实现数据的按列去重及合并处理

前言:

Pandas模块是Python用于数据导入及整理的模块,对数据挖掘前期数据的处理工作十分有用
话不多说,先上pandas官方文档:

pandas官方文档
数据处理参考文档A
数据处理参考文档B

**本次将要实现的需求如下:

1.有一个Exscl表数据,该表有学员姓名 ,订单ID,ID ,以及购买的商品ID。数据格式如下:

python用几行代码实现数据的按列去重及合并处理

; 2.现在要将上表处理成如下图所示格式:

python用几行代码实现数据的按列去重及合并处理

3.代码处理逻辑主要如下:

(1)原表共有四列值,去除第二列,并且当前三列的值都一样时,去重。
(2)将第四列的值(商品ID),按照(1)步骤的合并结果,进行追加处理。(例如姓名/订单ID/ID都相同,但是商品ID不同时,就要将商品ID做追加处理)
(3)将处理后的数据,按照原表的index进行排序并保留到csv文件中。

4.代码体现:
(1)先创建一个pandas的对象,用于读取数据源Exscl的数据,生成DataFrame

import pandas as pd
import csv

df = pd.read_excel('aa.xlsx', usecols=[0,1,2,3])

usecols代表读取哪几列的数据

(2)将数据进行去重的处理,并重置索引
groupby()函数用于分组去重,三列一样则去重,三列任意一列有不同,则不去重
agg()函数处理groupby()处理的数据之外的列数据,并将列数据进行聚合,并用,分割格式化处理数据
reset_index()重置索引排序

df = df.groupby(['cUserName','订单ID','ID']).agg(lambda x:','.join(x.values)).reset_index()

(3)将处理的得到的DataFrame写入csv文件中
df.values.tolist()将拿到的所有值,转为列表形式
pop(1)表示删除列表中下标为1的数据(删除订单ID),此时返回的每一个列表,就只有三个数据值了
最后再将每次循环获得的列表值写入csv文件中

    with open('E:\\pythonScripts_autotest\\student_demo.csv', "w", newline='', encoding='GBK') as f:
        for new_list in df.values.tolist():
            new_list[0] = new_list[0].replace("@xyx2008test1", "")
            new_list[3] = str(new_list[3].split(",")).replace("'", '\\"')
            new_list.pop(1)
            writer = csv.writer(f)
            writer.writerow(new_list)

5.完整代码

import pandas as pd
import csv

df = pd.read_excel('E:\\pythonScripts_autotest\\xyx_student_demo.xlsx',usecols=[0,1,2,3])

def data_list(df):

    df = df.groupby(['cUserName','订单ID','ID']).agg(lambda x:','.join(x.values)).reset_index()
    with open('E:\\pythonScripts_autotest\\student_demo.csv', "w", newline='', encoding='GBK') as f:
        for new_list in df.values.tolist():
            new_list[0] = new_list[0].replace("@xyx2008test1", "")
            new_list[3] = str(new_list[3].split(",")).replace("'", '\\"')
            new_list.pop(1)
            writer = csv.writer(f)
            writer.writerow(new_list)
    print("已转化成功!")

Original: https://blog.csdn.net/Van_CLB/article/details/115076464
Author: Van_pre
Title: python用几行代码实现数据的按列去重及合并处理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/741560/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球