我有一个带有以下列名的df:
Name, Id, xyz,..., ijk, 1, 2, 3, val1, val2,...
我想删除名称中不包含数字的所有列,只保留Name
和Id
。有没有一种有效的方法来做到这一点?
结果将是:Name,Id,1,2,3,val1,val2,...
谢谢!
答案 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]