【python_pandas_将列表按照某几列进行分组,再求和,按照原列表的字段顺序返回】

说明:
1、按照[“行描述”,”‘公司代码’, ‘科目代码’, ‘预算项目代码’] 进行分组。
2、对“贷方”列进行求和。
3、最后按照之前的表头顺序进行排序,返回结果列表。

#-*- coding:utf-8-*

import pandas as pd
def consolidate_salary_provisions(list1):

    header=(list1)[0]

    # 创建DataFrame
    df = pd.DataFrame(list1[1:], columns=header)

    # 将 '预算项目代码' 中的 None 值替换为 'Unknown'
    df['预算项目代码'] = df['预算项目代码'].fillna('Unknown')

    # 按省份分组,并计算人数和面积的合计数
    grouped = df.groupby(['行描述','公司代码',"科目代码","预算项目代码"]).agg({'贷方': 'sum','成本中心代码': 'first','借方': 'first',"产品":"first",'渠道段':'first','明细':'first','管理渠道':'first','管理':'first','部门':'first','现金流量项目':'first'}).reset_index()

    #排序
    grouped=grouped[header]

    # 将 '预算项目代码' 中的 'Unknown'替换为 None 值
    grouped['预算项目代码'] = grouped['预算项目代码'].replace('Unknown', None)

    # 将所有的 0 值替换为 None
    grouped = grouped.replace(0, None)

    # 将结果转换为列表形式
    result_list = [header]+grouped.values.tolist()

    return result_list 

list1=[['行描述', '公司代码', '成本中心代码', '科目代码', '借方', '贷方', '预算项目代码', '产品', '渠道段', '明细', '管理渠道', '管理', '部门', '现金流量项目'], ['计提北京分公司2024年08月管理人员工资', '201001', None, 2211010101.0, None, 100, 'YS030101', None, None, None, None, None, None, None], ['计提北京分公司2024年08月管理人员工资', '201001', None, 2211010101.0, None, 200, 'YS030101', None, None, None, None, None, None, None], ['计提北京分公司2024年08月管理人员间接理赔费用', '201001', None, 2211010101.0, None, 300, 'YS030104', None, None, None, None, None, None, None]]

print(consolidate_salary_provisions(list1))

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值