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

Pandas extractall无匹配时如何保留对应行的None值?

保留DataFrame所有索引的正则提取结果

原数据与问题

首先定义目标DataFrame:

import pandas as pd

df = pd.DataFrame({
    'column_1': ['ABC DEF', 'JKL', 'GHI  ABC', 'ABC ABC', 'DEF GHI', 'DEF', 'DEF DEF', 'ABC GHI DEF ABC'],
    'column_2': [9, 2, 3, 4, 6, 2, 7, 1 ]})

对应的原始数据:

column_1  column_2
0          ABC DEF         9
1              JKL         2
2         GHI  ABC         3
3          ABC ABC         4
4          DEF GHI         6
5              DEF         2
6          DEF DEF         7
7  ABC GHI DEF ABC         1

使用代码df['column_1'].str.extractall('(ABC)|(DEF)').groupby(level=0).first()提取时,会丢失无匹配项的索引1,无法得到包含所有原索引的结果。需要保留索引1并将对应值填充为None,期望输出如下:

0     1
0   ABC   DEF
1  None  None
2   ABC  None
3   ABC  None
4  None   DEF
5  None   DEF
6  None   DEF
7   ABC   DEF

解决方案

方法:通过reindex补全缺失索引

先执行原提取逻辑得到匹配结果,再通过reindex将结果对齐到原DataFrame的索引,最后用fillna填充缺失值为None:

# 执行原提取操作
temp_result = df['column_1'].str.extractall('(ABC)|(DEF)').groupby(level=0).first()
# 补全索引并填充缺失值
final_result = temp_result.reindex(df.index).fillna(value=None)

执行上述代码后,即可得到包含所有原索引的目标结果。

内容的提问来源于stack exchange,提问作者Himanshu Poddar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:06:25