python - Python/Pandas:一步删除包含两个字符串之一的列*不*?
问题描述
我有一个包含几列的数据框('df'),并且只想保留这些列的列标题以前缀'x1'或'x4'开头。也就是说,我想“删除”除列标题以“x1”或“x4”开头的列之外的所有列。
我怎样才能一步完成?
我知道,如果我只想保留那些带有x1
前缀的列,我可以这样做:
df = df [df.columns.drop(list(df .filter(regex='x1')))]
..但这会导致我丢失带有x4
我想保留的前缀的列。
同样,如果我只想保留那些带有x4
前缀的列,我可以这样做:
df = df [df.columns.drop(list(df .filter(regex='x4')))]
..但这会导致我丢失带有x1
我想保留的前缀的列。
解决方案
您可以将 df.loc 与列表理解一起使用:
df.loc[:, [x for x in df.columns if x.startswith(('x1', 'x4'))]]
它将显示所有开头有“x1”或“x4”的行和列。
推荐阅读
- rest - Apache CXF 应用程序的 REST Api 文档
- java - Android 通过 Webview POST 表单数据
- angular - 如何在 Angular 库中读取本地 JSON 文件?
- android - 在 Kotlin 多平台项目中使用 Ktor HttpClient 将文件作为二进制文件
- javascript - 什么命令相当于 Shift + F5 用于 JS 或 jQuery?
- angular - 为什么表单数组控件中的补丁值不起作用?
- c++ - 从Arduino中的char数组数组中选择项目
- git - 删除部分提交历史 - git
- macos - Google Hangout / Meet 无法在 Macbook 2020 上使用以太网电缆
- docker - docker 容器未运行(centos)