如何将DataFrame中列表列拆分并均分成本至对应列?
解决DataFrame成本均分问题
预处理成本列
首先需要将带格式的成本字符串转换为数值类型,才能进行均分计算:
import pandas as pd # 构建原始数据 df = pd.DataFrame({ 'workflow': [['cam', 'gdp', 'ott'], ['pdl', 'ott']], 'cost': ['$2,346', '$1,200'], 'cam': [None, None], 'gdp': [None, None], 'ott': [None, None], 'pdl': [None, None] }) # 清洗成本数据,转为整数 df['cost_clean'] = df['cost'].str.replace(r'[\$,]', '', regex=True).astype(int)
遍历分配成本
遍历每一行,计算均分金额后,根据workflow列表中的流程名,将值填充到对应列:
for index, row in df.iterrows(): flow_list = row['workflow'] split_value = row['cost_clean'] // len(flow_list) # 用整数除法匹配示例结果 # 逐个填充对应列 for flow in flow_list: df.loc[index, flow] = split_value # 移除临时清洗列(可选) df = df.drop('cost_clean', axis=1) # 将空值转为空白(可选,匹配示例格式) df = df.fillna('')
最终输出结果
执行后得到的DataFrame与期望格式一致:
workflow cost cam gdp ott pdl 0 ['cam', 'gdp', 'ott'] $2,346 782 782 782 1 ['pdl', 'ott'] $1,200 600 600
内容的提问来源于stack exchange,提问作者iFunction
相关产品推荐
相关产品推荐

