数据处理需求:拆分带编号变量并保留编码与名称关联
拆分带编号的变量并分离编码与文本内容
以下是几种常用工具的实现方案,可根据你日常使用的工具选择:
Excel 实现方式
方法1:文本分列(直观操作)
- 处理
DptResidence列:- 先选中该列,用替换功能把开头的
-去掉(查找内容填-,替换为空,点击「全部替换」时只替换第一个匹配项,或者用公式=SUBSTITUTE(A2, "-", "", 1)生成临时列) - 选中处理后的列,点击「数据」→「文本分列」,分隔符选择
-,分成两列,分别作为CodeResidence和新的DptResidence
- 先选中该列,用替换功能把开头的
- 处理
DeathIndex列:- 直接选中列,用文本分列功能,分隔符选
-,拆分出DeathIndexCod和新的DeathIndex
- 直接选中列,用文本分列功能,分隔符选
方法2:公式直接生成
假设原数据DptResidence在A列,DeathIndex在B列:
CodeResidence:=IF(LEFT(A2,1)="-", RIGHT(LEFT(A2,FIND("-",A2,2)-1), LEN(LEFT(A2,FIND("-",A2,2)-1))-1), LEFT(A2,FIND("-",A2)-1))- 新
DptResidence:=RIGHT(A2, LEN(A2)-FIND("-",A2,2)) DeathIndexCod:=LEFT(B2,FIND("-",B2)-1)- 新
DeathIndex:=RIGHT(B2,LEN(B2)-FIND("-",B2))
Python pandas 实现方式
import pandas as pd # 假设你的数据存储在DataFrame中,这里构造示例数据 df = pd.DataFrame({ "DptResidence": ["-1-Not defined", "54-North", "81-South"], "DeathIndex": ["0-No", "1-Yes", "0-No"] }) # 拆分DptResidence:先移除开头的负号,再拆分编码和文本 df["CodeResidence"] = df["DptResidence"].str.replace("^-", "", regex=True).str.split("-", expand=True)[0] df["DptResidence"] = df["DptResidence"].str.split("-", n=2, expand=True)[2] # 拆分DeathIndex df[["DeathIndexCod", "DeathIndex"]] = df["DeathIndex"].str.split("-", expand=True) # 调整列顺序为目标格式 df = df[["CodeResidence", "DptResidence", "DeathIndexCod", "DeathIndex"]] print(df)
R 实现方式
library(stringr) # 构造示例数据框 df <- data.frame( DptResidence = c("-1-Not defined", "54-North", "81-South"), DeathIndex = c("0-No", "1-Yes", "0-No"), stringsAsFactors = FALSE ) # 提取并清洗CodeResidence,更新DptResidence df$CodeResidence <- str_extract(df$DptResidence, "^-?\\d+") %>% str_remove("^-") df$DptResidence <- str_remove(df$DptResidence, "^-?\\d+-") # 提取DeathIndex编码,更新DeathIndex文本 df$DeathIndexCod <- str_extract(df$DeathIndex, "^\\d+") df$DeathIndex <- str_remove(df$DeathIndex, "^\\d+-") # 重新排列列顺序 df <- df[, c("CodeResidence", "DptResidence", "DeathIndexCod", "DeathIndex")] print(df)
内容的提问来源于stack exchange,提问作者Sophia
相关产品推荐
相关产品推荐

