python - 如何使用正则表达式而不是字符串的 usecols 元素?
问题描述
我使用 pandas 创建了一个脚本来检查所需的数据。我现在收到更多需要查看的文件,遗憾的是这些文件没有相同的标题。
例如,我在列列表中放置了使用“id_num”的列,并且在某些文件中它显示为“num_id”。
是否仍然可以使用我创建的 usecols 列表,并允许其中的某些元素与不同的标题字符串“连接”,例如使用正则表达式?
解决方案
我假设您指的是(或一些类似的熊猫阅读)中的usecols
关键字?pd.read_csv
我确定您已经收集到 pandas 在读取数据帧之前无法对数据帧进行正则表达式搜索,因此我相当肯定使用usecols
关键字进行正则表达式搜索是不可行的。
但是,在将 csv 读入数据框后(df
为了示例起见,我们将其命名),您可以使用正则表达式非常轻松地过滤感兴趣的列。
例如,假设您的新数据框已加载到df
:
potential_columns = ['num_id', 'id_num']
df_cols = [col for col in df.columns if re.search('|'.join(potential_columns), col)]
您可以使用 列出您想要搜索的所有潜在列potential_columns
。然后使用join
创建一个大规模的正则表达式搜索。然后使用列表推导来聚合df.columns
. 完成后,您可以通过调用来完成此过程:
df = df[df_cols]
处理重复的列,创建聪明的关键字来搜索是留给你的练习。
推荐阅读
- java - 如何在java中同步异步操作
- antlr - 语义谓词影响范围
- intellij-idea - 有没有办法在 Intellij Scene Builder 中包含 JavaFX controlsFX?
- html - 在伪元素在 chrome 和 firefox 上出现不同之前
- swift - 带有 if 条件的 Swift 映射函数
- java - Spring hibernate CrudRepository 根据唯一约束更新保存方法
- java - 有扩展网址吗?
- php - 从另一个驱动器上的文档根目录连接到 XAMPP MySQL 数据库
- javascript - 如何在 Vue 中的组件之间共享一些代码
- ios - UIView.transition -> Error Unexpectedly found nil