0

我有 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 来执行此操作。

谢谢!

4

1 回答 1

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)。

于 2014-10-09T16:21:22.353 回答