合并与正则表达式模式匹配的数据帧列表 - pandas

我希望将许多不同的数据框与正则表达式模式的名称合并。(不是列名,我的意思是数据帧本身的名称)。


通过此页面上接受的响应,我能够通过以下方式获得所需的输出:


reduce(lambda x, y: pd.merge(x, y, on = 'variable'), [df1, df2, df3])

但是将它们全部键入是相当乏味的。我想要的数据帧都标有前缀“m_”,所以我希望有一种简单的方法可以使用正则表达式来匹配我使用“^m_”的所有数据框。


为了提供更多的背景信息,我已经在RStudio中发表了一篇关于这个问题的帖子。事实上,我已经知道如何在R中做到这一点,但问题是关于如何将所有代码推入我自己的函数中(在这种情况下,我也想知道该怎么做)。因此,如果它以任何方式有所帮助,那么这与我正在尝试做的事情完全相同:


Reduce(function(...) merge(..., all = TRUE), mget(apropos("^m_")))

如果可能的话,像这样制作我自己的函数(但仍然用python来做这件事):


multi.merge <- function(pattern){

    Reduce(function(...) merge(..., all = TRUE), mget(apropos(pattern), envir=.GlobalEnv))

}

output <- multi.merge("^m_")

但是,如果您不知道R中的含义,希望我想要的输出仍然清晰。


皈依舞
浏览 107回答 1
1回答

浮云间

这应该这样做:def global_pd_dfs(pattern=None, return_values=False):&nbsp; &nbsp; dct = globals()&nbsp; &nbsp; if pattern is None:&nbsp; &nbsp; &nbsp; &nbsp; return [dct[x] if return_values else x for x in dct.keys() if type(dct[x]) == pd.core.frame.DataFrame]&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; pattern = re.compile(pattern)&nbsp; &nbsp; &nbsp; &nbsp; return [dct[x] if return_values else x for x in dct.keys() if type(dct[x]) == pd.core.frame.DataFrame and pattern.match(x)]def multi_merge(pattern=None):&nbsp; &nbsp; return reduce(lambda x, y: pd.merge(x, y, on = 'variable'), global_pd_dfs(pattern=pattern, return_values = True))如果没有给出模式,则列出全局环境中的所有 pandas dfs。并将尝试将全球环境中的所有大熊猫dfs合并。global_pd_dfs()multi_merge()R可以被Python模仿,但是,最后一个是字典。ls()globals()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python