You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写函数生成含指定列与Number列比值的新DataFrame?

实现方法

首先,先构造你提供的示例DataFrame:

import pandas as pd

data = {
    'N': [1, 2, 3],
    'Place': ['Angus', 'Argyl', 'Ayrsh'],
    'Number': [25, 43, 14],
    'C': [33, 23, 46],
    'H': [45, 12, 27],
    'E': [23, 56, 92],
    'G': [60, 19, 14],
    'D': [43, 45, 12]
}
df = pd.DataFrame(data)

推荐方法:向量化运算(无需遍历,高效快捷)

Pandas的核心优势就是向量化操作,完全不需要手动遍历行/列,直接用div方法按行做除法即可:

# 指定需要处理的列
target_cols = ['C', 'H', 'E', 'G', 'D']

# 对目标列每行的值除以同一行的Number列,同时给新列加上mean前缀
normalized_df = df[target_cols].div(df['Number'], axis=0).add_prefix('mean')

# 如果需要保留原有的N和Place列,合并即可
final_df = pd.concat([df[['N', 'Place']], normalized_df], axis=1)

运行后final_df的结果如下(小数保留简化展示):

NPlacemeanCmeanHmeanEmeanGmeanD
1Angus1.321.80.922.41.72
2Argyl0.530.281.300.441.05
3Ayrsh3.291.936.571.00.86

手动遍历实现(不推荐,仅作学习参考)

如果出于学习目的想实现遍历逻辑,可以用iterrows,但注意大数据量下性能远低于向量化操作:

# 初始化空的结果字典
result = {'N': [], 'Place': []}
for col in target_cols:
    result[f'mean{col}'] = []

# 遍历每一行计算
for idx, row in df.iterrows():
    result['N'].append(row['N'])
    result['Place'].append(row['Place'])
    number_val = row['Number']
    for col in target_cols:
        result[f'mean{col}'].append(row[col] / number_val)

# 转成最终DataFrame
final_df = pd.DataFrame(result)

内容的提问来源于stack exchange,提问作者Daisy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:15:59