Python中替换DataFrame错误元素:将't'替换为前序ID+1
解决DataFrame中替换't'为前一Station_ID数值加1的问题
实现步骤
- 提取
Station_ID字段中的数字部分,将非数字值(如't')转为NaN - 用前一个有效数字填充NaN,再对填充后的数值加1
- 将计算后的数字与前缀"ID"拼接,替换原字段中的't'
代码示例
import pandas as pd # 构造示例数据 data = { 'Station_ID': ['ID809086', 't', 'ID809088', 'ID809089', 'ID809098', 't', 'ID809100'] } df = pd.DataFrame(data) # 提取数字并转为数值类型 df['temp_num'] = df['Station_ID'].str.extract(r'(\d+)').astype(float) # 向前填充缺失值并加1 df['temp_num'] = df['temp_num'].ffill() + 1 # 替换't'为新的Station_ID df['Station_ID'] = df.apply( lambda x: f"ID{int(x['temp_num'])}" if x['Station_ID'] == 't' else x['Station_ID'], axis=1 ) # 删除临时列 df = df.drop('temp_num', axis=1) print(df)
代码说明
str.extract(r'(\d+)'):通过正则匹配提取Station_ID中的数字部分,非数字内容会生成NaNffill():向前填充缺失值,确保't'位置能获取到前一个有效的ID数字apply函数:逐行判断元素值,仅替换标记为't'的元素,其余元素保留原内容
内容的提问来源于stack exchange,提问作者Swatantra Sharma
相关产品推荐
相关产品推荐

