说明:
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))
结果: