如何将DataFrame中各列值除以对应行的指定总计列?
实现方法
步骤1:构造示例DataFrame(已有数据可跳过)
先导入pandas并创建匹配需求的示例数据:
import pandas as pd data = { 'Cluster': [1, 2, 3, 4, 5], 1: [3, 2, 1, 4, 3], 2: [2, 2, 1, 1, 2], 3: [1, 2, 1, 1, 3], 4: [3, 3, 3, 3, 3], 5: [1, 1, 1, 1, 1], 6: [2, 2, 2, 2, 2], 7: [1, 1, 1, 1, 1], 8: [1, 1, 1, 1, 1], 9: [2, 2, 2, 2, 2], 'Total': [16, 16, 13, 16, 18] } df = pd.DataFrame(data).set_index('Cluster')
步骤2:转换为分数格式字符串
筛选出除Total外的所有列,逐行将每个元素转换为值/对应行Total值的字符串格式:
# 排除Total列,获取需要处理的目标列 target_cols = df.columns.drop('Total') # 逐行生成分数字符串并替换原列值 df[target_cols] = df.apply( lambda row: [f"{val}/{row['Total']}" for val in row[target_cols]], axis=1, result_type='expand' )
最终效果
执行代码后,DataFrame会呈现你需要的格式:
1 2 3 4 5 6 7 8 9 Total Cluster 1 3/16 2/16 1/16 3/16 1/16 2/16 1/16 1/16 2/16 16 2 2/16 2/16 2/16 3/16 1/16 2/16 1/16 1/16 2/16 16 3 1/13 1/13 1/13 3/13 1/13 2/13 1/13 1/13 2/13 13 4 4/16 1/16 1/16 3/16 1/16 2/16 1/16 1/16 2/16 16 5 3/18 2/18 3/18 3/18 1/18 2/18 1/18 1/18 2/18 18
内容的提问来源于stack exchange,提问作者123mcgr
相关产品推荐
相关产品推荐

