如何根据索引是否包含特定单词拆分Pandas Series为两个序列?
Pandas Series拆分:获取不含指定索引关键词的剩余序列
你已经用filter(like="foo")拿到了索引含"foo"的序列,要获取剩余的条目,有几种简单直接的方法:
- 方法一:用
drop删除目标索引
直接从原序列里移除foo_series的索引,代码简洁直观:
remaining_series = original_series.drop(foo_series.index)
如果原序列有重复索引,这个方法会删掉所有和foo_series索引匹配的条目,适合大多数常规场景。
- 方法二:布尔索引取反
通过判断索引(转成字符串后)是否不包含"foo",筛选出剩余条目:
# 先把索引转为字符串,再判断是否不含"foo",~表示取反 remaining_series = original_series[~original_series.index.astype(str).str.contains("foo")]
这种方法不需要先创建foo_series,可以直接一步拆分两个序列:
foo_mask = original_series.index.astype(str).str.contains("foo") foo_series = original_series[foo_mask] remaining_series = original_series[~foo_mask]
- 方法三:索引差集筛选
利用索引的差集操作,获取原序列有但foo_series没有的索引,再通过.loc选取:
remaining_series = original_series.loc[original_series.index.difference(foo_series.index)]
这个方法会自动去重索引,适合原序列存在重复索引且需要保留唯一索引条目的场景。
内容的提问来源于stack exchange,提问作者anton.kahn
相关产品推荐
相关产品推荐

