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

如何将DataFrame中城市的均值与标准差列用±符号合并

合并均值与标准差列的实现方法(Python/Excel)

需求说明

现有包含多城市均值(列名后缀_mean)和标准差(列名后缀_sdev)的表格数据,需要将每个城市的均值与标准差用±符号合并,生成以城市名为列名的新表格,空值保留原状态。


Python 实现方案(基于Pandas)

步骤与代码

  1. 导入Pandas并构造/读取原始数据:
import pandas as pd

# 示例原始数据(实际可通过pd.read_csv/pd.read_excel读取)
data = {
    'Gulzarpet_mean': [20.2, 12.7],
    'Amravati_mean': [25.5, 14.8],
    'Vizag_mean': [pd.NA, 56.7],
    'Gulzarpet_sdev': [5.9, 12.3],
    'Amravati_sdev': [7.4, 15.9],
    'Vizag_sdev': [pd.NA, 7.3]
}
df = pd.DataFrame(data)
  1. 批量合并对应列:
# 提取唯一城市名称
cities = list(set(col.split('_')[0] for col in df.columns))

# 初始化新DataFrame
new_df = pd.DataFrame()

# 循环处理每个城市的均值与标准差列
for city in cities:
    mean_col = f"{city}_mean"
    sdev_col = f"{city}_sdev"
    # 仅当均值和标准差都非空时合并,否则保留空值
    new_df[city] = df.apply(
        lambda row: f"{row[mean_col]}±{row[sdev_col]}" 
        if pd.notna(row[mean_col]) and pd.notna(row[sdev_col]) 
        else pd.NA,
        axis=1
    )

# 调整列顺序与原始数据的城市顺序一致(可选)
new_df = new_df[[col.split('_')[0] for col in df.columns if '_mean' in col]]

# 输出结果
print(new_df)

代码说明

  • 通过拆分列名提取城市名,避免手动逐个指定城市
  • 用apply逐行判断空值,确保仅当均值和标准差都有效时才合并
  • 可选调整列顺序,保持与原始数据的城市排列一致

Excel 实现方案

方法1:公式手动批量处理

  1. 在空白列(如G列)首行输入公式,以Gulzarpet为例(均值在A列,标准差在D列):
=IF(AND(NOT(ISBLANK(A2)),NOT(ISBLANK(D2))),A2&"±"&D2,"")
  1. 将公式下拉填充至所有行,复制结果并粘贴为值,将列名改为对应城市名
  2. 重复上述步骤处理其他城市

方法2:Power Query 高效批量处理

  1. 选中原始数据区域,点击「数据」→「从表格/区域」导入Power Query编辑器
  2. 点击「转换」→「逆透视列」→「逆透视所有列」,将数据转为「属性」「值」两列
  3. 选中「属性」列,点击「拆分列」→「按分隔符」,选择下划线_,拆分为「城市名」「类型」两列
  4. 选中「城市名」列,点击「透视列」,值列选「值」,列名选「类型」,聚合函数选「不要聚合」
  5. 点击「添加列」→「自定义列」,输入公式:
= if [mean] <> null and [sdev] <> null then Text.From([mean]) & "±" & Text.From([sdev]) else null
  1. 删除「mean」「sdev」列,点击「关闭并上载」,将结果导出至Excel表格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:01:21