如何使用正则表达式而不是字符串的usecols元素?

时间:2018-09-04 14:26:57

标签: python regex pandas

我创建了一个脚本来使用熊猫浏览所需的数据。 现在,我收到了更多需要查看的文件,可惜这些文件没有相同的标题。

例如,我已经在列列表中使用了“ id_num”,在某些文件中它显示为“ num_id”。

是否仍然可以使用我创建的usecols列表,并允许其中的某些元素与不同的标头字符串“连接”,例如使用正则表达式?

1 个答案:

答案 0 :(得分:1)

我假设您是指usecols中的pd.read_csv关键字(或一些类似的熊猫读物)?我敢肯定,您已经收集到大熊猫无法在数据框之前进行正则表达式搜索,因此它甚至可以读取数据框,因此,我敢肯定,使用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]

处理重复的列,创建聪明的关键字进行搜索,留给您作为练习。