python - 如果列名以数字开头,则删除 pandas 列
问题描述
我有一个大约 200 列的 pandas DataFrame。粗略地说,我想这样做
for col in df.columns:
if col begins with a number:
df.drop(col)
我不确定处理 pandas DataFrames 的最佳做法是什么,我应该如何处理?我的伪代码会起作用,还是不建议在 for 循环中修改熊猫数据框?
解决方案
我认为最简单的是选择所有不以数字开头的列filter
with regex
-^
是字符串的开头,而\D
不是数字:
df1 = df.filter(regex='^\D')
类似的选择:
df1 = df.loc[:, df.columns.str.contains('^\D')]
或逆条件并选择数字:
df1 = df.loc[:, ~df.columns.str.contains('^\d')]
df1 = df.loc[:, ~df.columns.str[0].str.isnumeric()]
如果想使用你的伪代码:
for col in df.columns:
if col[0].isnumeric():
df = df.drop(col, axis=1)
样品:
df = pd.DataFrame({'2A':list('abcdef'),
'1B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D3':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')})
print (df)
1B 2A C D3 E F
0 4 a 7 1 5 a
1 5 b 8 3 3 a
2 4 c 9 5 6 a
3 5 d 4 7 9 b
4 5 e 2 1 2 b
5 4 f 3 0 4 b
df1 = df.filter(regex='^\D')
print (df1)
C D3 E F
0 7 1 5 a
1 8 3 3 a
2 9 5 6 a
3 4 7 9 b
4 2 1 2 b
5 3 0 4 b
推荐阅读
- python - 使用 Python 通过 shapefile 裁剪栅格
- c# - 有谁知道为什么Visual Studio 更新后不能设置断点?
- python - python:“缺少 1 个必需的位置参数:'self'”3 次中有 1 次?
- c - 比较 char* 的元素
- python - pip 找不到 tensorflow 2.0 或 2.1
- python - 在 Python 中使用 wget.download() 函数时,如果文件已经在输出目录中,如何防止下载
- node.js - 无法在 ubuntu 中的 nodejs 和 npm 中工作
- vue.js - Vue3在登录后或某个页面后添加全局插件
- javascript - 在 vuejs 中应用动态主题
- angular - 从数据库中检索信息的速度