如何将多个同义字符串观测值合并到同一变量且不丢失观测数据
字符串取值合并方案
核心逻辑:对所有纯数字构成的字符串,先转为整数自动清除前导零,再转回字符串即可统一格式,非数字格式的取值直接保留原值,之后再做统计汇总就不会丢失任何观测数据。
纯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
相关产品推荐
相关产品推荐

