首页 > 解决方案 > 循环遍历不同的 Dataframes Pandas

问题描述

你好世界,

我有 52 个数据帧(df 和数据),每个数据帧只包含带有字母首字母的名称。

下面是字母 A 和 B 的示例(包含在 df 和数据中)

dfA                                                 dfB
Code  Name                                          Code  Name
15    Amiks                                         68    Bernard 
157   Alis                                          14    Barpti

dataA                                               dataB
Code  Name                                          Code  Name 
      Amiks                                               Berti
      Alis                                                Bernard
      Anatole                                             Barpti

问题:

不是 Python 专家,如何循环使用相同字母的数据帧?而不是寻找所有的数据框,而只是寻找相同的字母。

例如:检查是否:

编辑

原始DF如下

df                                                 data
Code  Name                                          Code  Name
15    Amiks                                               Amiks   
157   Alis                                                Alis
14    Barpti                                             Bernard 
68    Bernard                                            Barpti

我刚刚为每个第一个字母创建了一个 df 。

目的是加快计算时间并避免在整个 DF 内进行检查,因为我们只能检查具有相同首字母的行。

感谢任何人的帮助。

标签: pythonpandas

解决方案


你应该认为变量名只对你有意义,对 Python 解释器没有意义。当然,使用locals()or也有一些不雅的方法,globals()但它们永远不应该在普通代码中使用。

这意味着您的数据框是相关的,您应该使用数据结构来跟踪关系。您可以使用 2 个列表或一对列表,例如:

dataframes = [ (dfA, dataA), (dfB, dataB), ...]

如果字母本身很重要,您可以使用字典:

dataframes = { 'A': (dfA, dataA), 'B': (dfB, dataB), ...}

然后你可以很容易地迭代:

for letter in dataframes:
    commons = dataframes[letter][0].merge(dataframes[letter][1], on='Name',
                                          suffixes=('_x', ''))[['Code', 'Name']]
    # process commons which contains code and name where datax.Name is in dfx.Name
    ...

但除非原始数据帧真的很大,否则我建议您将具有首字母方式的单个数据帧与 52 个数据帧进行基准测试。熊猫如果相当高效,只要一切都适合内存......


推荐阅读