我有 pandas 数据框,我正在尝试选择多列(列范围从 开始Test
到Bio Ref
)。选择必须从列开始Test
到名称以 开头的任何列Bio
。以下是示例数据框。
实际上它可以包含:
- 列之前的任意数量的列
Test
, Test
&之间的任意列数Bio Ref
,如 2、3、4、5 等。- 之后有任意数量的列
Bio Ref
。 Bio Ref
列中可以包含后缀,但Bio Ref
始终作为列名的开头。
df_chunk = pd.DataFrame({
'Waste':[None,None],
'Test':['something', 'something'],
'2':[None,None],
'3':[None,None],
'Bio Ref':['2-50','15-100'],
'None':[None,None]})
df_chunk
Waste Test 2 3 Bio Ref None
0 None something None None 2-50 None
1 None something None None 15-100 None
我已尝试过以下有效的代码:
df_chunk.columns.str.startswith('Bio')
df_chunk[df_chunk.columns[pd.Series(df_chunk.columns).str.startswith('Bio')==1]]
问题:但是当我尝试使用它们进行多列选择时,它不起作用:
df_chunk.loc[:, 'Test':df_chunk.columns.str.startswith('Bio')]
您可以为布尔索引创建掩码:
或者识别正确的名称来构建切片:
输出:
re.match
从标准库中使用re
如下:输出:
感谢wjandrea建议使用
iloc
。参见:
pandas loc vs. iloc vs. at vs. iat?