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

如何将多个同义字符串观测值合并到同一变量且不丢失观测数据

字符串取值合并方案

核心逻辑:对所有纯数字构成的字符串,先转为整数自动清除前导零,再转回字符串即可统一格式,非数字格式的取值直接保留原值,之后再做统计汇总就不会丢失任何观测数据。


纯Python实现

适用于字典类原始数据的处理:

# 示例原始计数数据,键为字符串取值,值为对应观测数
raw_data = {
    "0": 8011, "1": 18244, "2": 9289, "3": 32271, "4": 14412, "5": 14866,
    "6": 25329, "7": 3972, "8": 7086, "9": 44114, ".": 178, "0": 834,
    "00": 7, "01": 17, "02": 11, "03": 29, "04": 8
}

processed_data = {}
for key, count in raw_data.items():
    # 仅处理纯数字字符串,非数字内容保留原有格式
    if key.isdigit():
        unified_key = str(int(key))
    else:
        unified_key = key
    # 累加计数,不丢失观测
    processed_data[unified_key] = processed_data.get(unified_key, 0) + count

运行后processed_data["1"]的结果为18261,就是原有"1"和"01"对应的观测数总和。


Pandas表格数据实现

适用于DataFrame格式的数据集处理:

import pandas as pd

# 示例数据集,target列为待合并的字符串列
df = pd.DataFrame({
    "target": ["1", "01", "1", "00", "02", "."],
    "obs_value": [12, 17, 34, 7, 11, 178]
})

# 统一target列的取值格式
df["target"] = df["target"].apply(lambda x: str(int(x)) if x.isdigit() else x)

# 如需汇总统计,分组求和即可
grouped_result = df.groupby("target", as_index=False)["obs_value"].sum()

如果不需要汇总,仅做取值统一,执行完格式转换步骤即可,原有数据行数不会变动,不会丢失任何观测行。


注意事项

  • 如果存在"000"这类全零的取值,转换后会统一为"0",符合常规统计需求
  • 若字符串中包含字母、符号等非数字内容,会直接保留原值,不会报错

内容的提问来源于stack exchange,提问作者Osiyallê Rodrigues

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:15:01