Pandas Python:使用re.IGNORECASE时,按行标签获取df的子集

时间:2014-10-09 15:34:36

标签: python regex pandas dataframe ignore-case

我的df看起来像这样:

print df_raw

Name              exp1
Name                  
UnweightedBase    1364
Base              1349
BFC_q5a1        34.18%
BFC_q5a2         2.93%
BFC_q5a3         1.86%
BFC_q5a4         1.93%
BFC_q5a5         0.84%

我想使用行标签从上面的数据框构建子集但是,我想使用re.IGNORECASE但我不确定如何。

没有re.IGNORECASE,代码如下所示:

subset_df = df_raw.loc[df_raw.index.isin(['BFC_q5a4', 'BFC_q5a5'])]

如何更改我的代码以使用re.IGNORECASE获取以下代码:

subset_df = df_raw.loc[df_raw.index.isin(['bFc_q5A4', 'BfC_Q5a5'])]

注意 - 我不想使用str.lower或str.upper来执行此操作。

谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道以不区分大小写的方式搜索索引标签的任何简洁方法(df.filter很有用,但不幸的是似乎无法忽略大小写。)

要解决此问题,您可以使用可以忽略大小写的系列方法pd.Series.str.contains

subset_df = df[pd.Series(df.index).str.contains(regex, case=False).values]

在系列中转换索引,然后应用正则表达式匹配。在这种情况下,regex可能类似于'bFc_q5A4|BfC_Q5a5'。大小写被忽略(使用case=False)。