Python 利用pandas多列分组多列求和

悬崖上的金鱼 / 2023-09-02 / 原文

一、需求描述: 如下Excel数据 需要按 ASIN、SKU、品名、店铺 对 1-31 的列进行分组求和,实际数据是有很多重复的SKU数据

 二、代码实现

import pandas as pd

# 从Excel获取数据
df = pd.read_excel(r'C:\\Users\\liuchunlin2\\Desktop\\预警信息汇总.xlsx', sheet_name='Sheet1')
"""
使用pandas库中的read_excel()函数从指定的Excel文件中读取数据。
r'C:\\Users\\liuchunlin2\\Desktop\\预警信息汇总.xlsx'为文件路径,需根据实际情况修改。
sheet_name='Sheet1'表示读取Excel文件中名为'Sheet1'的工作表。
读取的数据存储在一个DataFrame对象df中。
"""

# 列数据为空的用0填充
df = df.fillna(0)
"""
使用fillna()函数将数据框df中的空值(NaN)替换为0,以确保数据框中没有空值。
"""

my_list = list(range(1, 32))
"""
使用list()函数和range()函数生成一个包含1到31的整数列表my_list。
这里生成的整数列表是为了后续分组聚合操作使用。
"""

# 打印列表
print(my_list)
"""
使用print()函数打印my_list列表,便于查看生成的整数列表。
"""

# 对数据进行分组聚合操作
grouped_df = df.groupby(['ASIN', 'SKU', '品名', '店铺'])[my_list].sum().reset_index()
"""
使用groupby()函数对数据框df进行分组聚合操作。
['ASIN', 'SKU', '品名', '店铺']是按照这些列进行分组。
[my_list]表示对整数列表中的列进行求和。
sum()表示对这些列进行求和操作。
reset_index()用于重置索引,使分组后的数据重新建立索引。
分组聚合操作后的结果存储在grouped_df数据框中。
"""

# 将处理后的数据保存到Excel文件中
grouped_df.to_excel(r'C:\\Users\\liuchunlin2\\Desktop\\预警信息汇总2.xlsx', index=False)
"""
使用to_excel()函数将处理后的数据保存到Excel文件中。
r'C:\\Users\\liuchunlin2\\Desktop\\预警信息汇总2.xlsx'为保存的路径和文件名,需根据实际情况修改。
设置index=False表示不保存索引。
"""

# 打印处理后的数据
print(grouped_df)
"""
使用print()函数打印处理后的数据,便于查看分组聚合操作的结果。
"""