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

如何根据每行频次最高的AM/PM值替换整行所有时间的后缀?

Pandas行级统一替换时间后缀实现方案

核心思路

你已经正确获取到了每行的最高频次后缀,接下来只需要逐行提取所有时间的数字部分,拼接上对应行的最高频次后缀即可。

完整实现代码

import pandas as pd

# 构造示例数据(实际使用时可替换为你自己的DataFrame)
df = pd.DataFrame({
    'a': ['2 PM', '2 PM', '10 AM', '8 AM'],
    'b': ['6 PM', '1 PM', '2 AM', '9 AM'],
    'c': ['4 PM', '10 PM', '9 AM', '10 AM'],
    'd': ['5 AM', '12 AM', '2 PM', '11 AM']
})
# 指定要处理的列
process_cols = ['a', 'b', 'c', 'd']

# 1. 计算每行最高频次的后缀
row_max_suffix = df[process_cols].applymap(lambda x: x.split()[1]).mode(axis=1)[0]

# 2. 逐行替换所有时间的后缀
df[process_cols] = df[process_cols].apply(
    lambda row: row.str.split().str[0] + ' ' + row_max_suffix[row.name],
    axis=1
)

# 输出结果
print(df)

关键逻辑说明

  • row.str.split().str[0]:拆分当前行的所有时间字符串,提取数字部分,丢弃原有后缀
  • row_max_suffix[row.name]:通过行索引row.name匹配到当前行对应的最高频次后缀,和数字部分拼接完成替换

运行上述代码后输出结果和预期完全一致:

a      b      c      d
0   2 PM   6 PM   4 PM   5 PM
1   2 PM   1 PM  10 PM  12 PM
2  10 AM   2 AM   9 AM   2 AM
3   8 AM   9 AM  10 AM  11 AM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:54:03