删除不包含数字的列名

时间:2018-01-29 23:04:43

标签: python pandas

我有一个带有以下列名的df:

Name, Id, xyz,..., ijk, 1, 2, 3, val1, val2,...

我想删除名称中不包含数字的所有列,只保留NameId。有没有一种有效的方法来做到这一点?

结果将是:Name,Id,1,2,3,val1,val2,...

谢谢!

2 个答案:

答案 0 :(得分:4)

IIUC:

df = df.loc[:, df.columns.astype(str).str.contains('\d') | df.columns.isin(['Name','Id'])]

演示:

In [224]: df
Out[224]:
   Name  Id  xyz  ijk  1  2  3  val1  val2
0     1   2    3    4  5  6  7     8     9

In [225]: df = df.loc[:, df.columns.astype(str).str.contains('\d') | df.columns.isin(['Name','Id'])]

In [226]: df
Out[226]:
   Name  Id  1  2  3  val1  val2
0     1   2  5  6  7     8     9

答案 1 :(得分:3)

根据MaxU的回答str.match

new_columns = df.columns[df.columns.astype(str).str.match("(.*\d.*)|Id|Name")]
df[new_columns]