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

如何将DataFrame中指定列按列最大值垂直归一化?

解决方案

先明确你的DataFrame结构:

idsummarysummary_lenapplebookcomputer
1....210210
2...120301
3...50221

你需要对apple、book、computer这些关键词列做列内归一化(值除以列最大值),已经通过max_per_col = df_freq[keywords].max()拿到了每列的最大值,接下来可以用以下方式完成计算:

1. 直接替换原关键词列(浮点数结果)

利用Pandas的广播特性,直接对关键词列执行除法操作:

# 假设keywords是你的关键词列列表,比如keywords = ['apple', 'book', 'computer']
df_freq[keywords] = df_freq[keywords].div(max_per_col)

执行后,DataFrame结果:

idsummarysummary_lenapplebookcomputer
1....2100.6666670.50.0
2...1201.00.01.0
3...500.6666671.01.0

2. 保留原列,新增归一化列

如果不想覆盖原数据,可以给归一化后的列加后缀:

df_freq[[f"{col}_norm" for col in keywords]] = df_freq[keywords].div(max_per_col)

新增列后,DataFrame会同时保留原关键词列和对应的*_norm归一化列。

3. 以分数形式展示结果

如果需要像示例那样用分数格式呈现,结合fractions.Fraction处理:

from fractions import Fraction

# 替换原列为分数(自动约分)
df_freq[keywords] = df_freq[keywords].div(max_per_col).applymap(lambda x: Fraction(x).limit_denominator())

处理后结果:

idsummarysummary_lenapplebookcomputer
1....2102/31/20
2...120101
3...502/311

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:20:26