我有一个带有以下列名的pandas数据帧:
Result1,Test1,Result2,Test2,Result3,Test3等......
我想删除名称中包含单词“Test”的所有列 . 这些列的数量不是静态的,而是取决于先前的函数 .
我怎样才能做到这一点?
import pandas as pd import numpy as np array=np.random.random((2,4)) df=pd.DataFrame(array, columns=('Test1', 'toto', 'test2', 'riri')) print df Test1 toto test2 riri 0 0.923249 0.572528 0.845464 0.144891 1 0.020438 0.332540 0.144455 0.741412 cols = [c for c in df.columns if c.lower()[:4] != 'test'] df=df[cols] print df toto riri 0 0.572528 0.144891 1 0.332540 0.741412
这是一个很好的方法:
df = df[df.columns.drop(list(df.filter(regex='Test')))]
使用 DataFrame.select 方法:
DataFrame.select
In [38]: df = DataFrame({'Test1': randn(10), 'Test2': randn(10), 'awesome': randn(10)}) In [39]: df.select(lambda x: not re.search('Test\d+', x), axis=1) Out[39]: awesome 0 1.215 1 1.247 2 0.142 3 0.169 4 0.137 5 -0.971 6 0.736 7 0.214 8 0.111 9 -0.214
您可以使用“过滤器”过滤掉您想要的列
import pandas as pd import numpy as np data2 = [{'test2': 1, 'result1': 2}, {'test': 5, 'result34': 10, 'c': 20}] df = pd.DataFrame(data2) df c result1 result34 test test2 0 NaN 2.0 NaN NaN 1.0 1 20.0 NaN 10.0 5.0 NaN
现在过滤
df.filter(like='result',axis=1)
得到..
result1 result34 0 2.0 NaN 1 NaN 10.0
4 回答
这是一个很好的方法:
使用
DataFrame.select
方法:您可以使用“过滤器”过滤掉您想要的列
现在过滤
得到..