我是python的新手很抱歉,如果这太明显了。
我的数据框如下所示:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 10))
df.columns = ['date1', 'date2', 'date3', 'name1', 'col1', 'col2', 'col3', 'name2', 'date4', 'date5']
date1 date2 date3 name1 col1 col2 col3 \
0 -0.177090 0.417442 -0.930226 0.460750 1.062997 0.534942 -1.082967
1 -0.942154 0.047837 -0.494979 2.437469 -0.446984 0.709556 -0.135978
2 -1.544783 0.129307 -0.169556 -0.890697 2.650924 0.976610 0.290226
3 -0.651220 -0.196342 0.712601 0.641927 -0.009921 -0.038450 0.498087
4 -0.299145 -1.407747 1.914364 0.554330 -0.196702 2.037057 -0.287942
name2 date4 date5
0 -0.318310 0.358619 -0.243150
1 1.171024 0.277943 -1.584723
2 -0.546707 -1.951831 0.678125
3 -0.510261 -0.018574 -0.212684
4 1.929841 0.995625 -1.125044
我希望保留所有列,例如' date'在他们的名字。也就是说,我想保留列' date1',' date2',' date3',' date4',' date5&# 39;等。在一些统计包中,我可以使用*来表示所有可能的字符,并使用如下命令:
keep date*
在python中有相同的方法吗?
非常感谢您的帮助。
答案 0 :(得分:3)
您可以使用filter
方法。相当于keep date*
:
In [62]: df.filter(like='date')
Out[62]:
date1 date2 date3 date4 date5
0 0.091744 -0.431606 1.280286 0.263137 0.444550
1 0.688155 0.583918 0.957041 0.446047 1.654274
2 0.109004 0.608818 0.091498 0.940406 0.476479
3 -0.874016 1.312567 0.326480 1.213292 0.504049
4 -0.203515 -0.979086 0.458790 1.012296 -2.446310
filter
方法还有一个regex
关键字,可以进行更复杂的过滤
例如,要删除所有日期,您可以提供一个表示与某个字符串不匹配的正则表达式:df.filter(regex="^(?!date).*$")
在即将推出的pandas(0.14)中,此功能也将在drop
方法中提供,因此这将更容易。