如何从字符串列提取整数填充DataFrame中FALLDOWN_FLOOR的NaN值
解决方案
针对你的需求,我们可以利用Pandas的矢量化字符串方法结合正则表达式,高效提取FALLDOWN_LOCATION中与“층”关联的首个整数,填充FALLDOWN_FLOOR的NaN值,具体步骤如下:
核心思路
- 用正则表达式
r'(\d+)층'匹配“층”前的首个整数(捕获组(\d+)提取数字部分) - 筛选
FALLDOWN_FLOOR为NaN的行,批量完成提取与填充操作
代码实现
import pandas as pd # 假设你的DataFrame名为df # 1. 定义筛选条件:FALLDOWN_FLOOR为NaN的行 con = df['FALLDOWN_FLOOR'].isna() # 2. 提取首个与“층”关联的整数并转换为数值类型 extracted_floors = df.loc[con, 'FALLDOWN_LOCATION'].str.extract(r'(\d+)층', expand=False).astype(int) # 3. 填充NaN值 df.loc[con, 'FALLDOWN_FLOOR'] = extracted_floors
结果验证
执行df.loc[con, ['FALLDOWN_FLOOR','FALLDOWN_LOCATION']]后,将得到如下结果:
| FALLDOWN_FLOOR | FALLDOWN_LOCATION | |
|---|---|---|
| 9 | 10 | 도로옆 옹벽/10층 |
| 106 | 5 | 5층 빌라에서 1층으로 투신함 |
| 109 | 7 | 병원 7층 옥상 투신 |
| 112 | 15 | 15층 아파트 베란다에서 투신 |
| 113 | 10 | 10층 |
| 129 | 14 | 14층 |
| 133 | 13 | 아파트 13층과 14층 사이 계단 창문으로 뛰어내림 |
| 136 | 13 | 아파트 13층 높이에서 투신하여 2층 난간으로 떨어짐. |
性能说明
该方案基于Pandas矢量化操作,避免了循环遍历,针对10万行数据的处理效率极高,不会出现性能瓶颈。
内容的提问来源于stack exchange,提问作者Chung Joshua
相关产品推荐
相关产品推荐

