我有以下df,我想对列名称应用过滤器,只是保留以某个字符串开头的过滤器:
这是我目前的df:
ruta2:
Current SAN Prev.1m SAN Prev.2m SAN Prev.3m SAN Current TRE \
A 5 6 7 6 3
B 6 5 7 6 6
C 12 11 11 11 8
基本上我想要的是过滤数据框并保留以Current
开头的列。
然后所需的输出将是:
ruta2:
Current SAN Current TRE
A 5 3
B 6 6
C 12 8
为了做到这一点,我尝试了这个过滤器,但输出了一个值错误:
ruta2=ruta2[~(ruta2.columns.str[:4].str.startswith('Prev'))]
答案 0 :(得分:1)
似乎你只需要:
ruta2=ruta2.loc[:, ~(ruta2.columns.str[:4].str.startswith('Prev'))]
#same as
#ruta2=ruta2.loc[:, ~ruta2.columns.str.startswith('Prev')]
print (ruta2)
Current SAN Current TRE
A 5 3
B 6 6
C 12 8
或者:
cols = ruta2.columns[ ~(ruta2.columns.str[:4].str.startswith('Prev'))]
ruta2=ruta2[cols]
print (ruta2)
Current SAN Current TRE
A 5 3
B 6 6
C 12 8
但是,如果只需要Current
列,则使用filter
(^
表示在正则表达式中启动字符串):
ruta2=ruta2.filter(regex='^Current')
print (ruta2)
Current SAN Current TRE
A 5 3
B 6 6
C 12 8
答案 1 :(得分:0)
#filter the columns names starting with 'Current'
ruta2[[e for e in ruta2.columns if e.startswith('Current')]]
Out[383]:
Current SAN Current TRE
A 5 3
B 6 6
C 12 8
或者您可以使用掩码数组来过滤列:
ruta2.loc[:,ruta2.columns.str.startswith('Current')]
Out[385]:
Current SAN Current TRE
A 5 3
B 6 6
C 12 8