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

如何用Pandas计算指定行中位数替换DataFrame目标行数值?

解决方法:替换3开头周几的%dict值为对应周1、周2的中位数

思路

先拆分wk&day列分离出周数和星期,再按星期分组计算第1、2周数据的中位数,最后将第3周对应星期的%dict值替换为该中位数。

完整代码

import pandas as pd

# 构造示例DataFrame(对应你提供的表格数据)
data = {
    'wk&day': ['1Friday', '1Monday', '1Saturday', '1Sunday', '1Thursday', '1Tuesday', '1Wednesday',
               '2Friday', '2Monday', '2Saturday', '2Sunday', '2Thursday', '2Tuesday', '2Wednesday',
               '3Friday', '3Monday', '3Saturday', '3Sunday', '3Thursday', '3Tuesday', '3Wednesday'],
    '%dict': [6, 6, 1.7, 1.698750, 6.538169, 7.117872, 6.545507,
              2.3775163, 2.843480, 1.918890, 1.7391091, 2.5646356, 2.7847760, 2.7921140,
              2.8728322, 2.7994520, 2.2601081, 1.7170951, 2.8581562, 2.8838392, 2.6526918]
}
df = pd.DataFrame(data)

# 拆分wk&day列,提取周数和星期
df[['week', 'day']] = df['wk&day'].str.extract(r'(\d+)([A-Za-z]+)')
df['week'] = df['week'].astype(int)

# 计算每个星期对应第1、2周的中位数
day_median_map = df[df['week'].isin([1, 2])].groupby('day')['%dict'].median()

# 替换第3周的%dict值
df.loc[df['week'] == 3, '%dict'] = df.loc[df['week'] == 3, 'day'].map(day_median_map)

# 移除临时生成的week和day列,恢复原结构
df = df.drop(columns=['week', 'day'])

# 查看结果
print(df)

结果说明

执行后,第3周各星期的%dict值会被替换为对应星期第1、2周数据的中位数:

  • 3Monday → (6 + 2.843480)/2 = 4.42174
  • 3Friday → (6 + 2.3775163)/2 = 4.18875815
  • 以此类推其他星期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:31:01