将数据帧列表拆分为多个数据帧

Posted

技术标签:

【中文标题】将数据帧列表拆分为多个数据帧【英文标题】:Separate a list of data frames into multiple data frames 【发布时间】:2022-01-07 19:58:29 【问题描述】:

我有一个使用用户定义函数创建的数据框列表 -

a = list(map(test, cat_feature_names))

在哪里

cat_feature_names = ['Brand', 'Variety', 'Style', 'Country', 'Stars', 'Top Ten']

功能是这样的

def test(col):
    vc = df[col].value_counts().rename_axis('unique_values').reset_index(name='counts')
    vc['feature'] = col
    vc['frequency']=round((vc['counts']/(vc['counts'].sum())*100),2)
    vc = vc[['feature','unique_values','counts','frequency']]
    no_of_unique = len(vc)
    return vc  

现在,我需要将“a”的内容分成多个大小和形状不同的数据框。我需要动态地执行此操作。我现在能做的就是一次提取一个数据帧,就像这样

a[0]

for 循环不起作用,因为列表“a”中可能有大量数据帧。

请帮忙。

【问题讨论】:

【参考方案1】:

以下 for 循环会将您的列表分成多个数据框。 globals() 将用于将其命名为 df_0、df_1 等。

for i in range(len(your_list)):
    globals()[f"df_i"] = your_list[i]

【讨论】:

【参考方案2】:

IIUC,您在多个数据帧中分离 df,将列名作为参数提供给映射函数 test

一种解决方案可能是将数据框存储在字典中,使用列名作为键:

df_dict = dict(zip(cat_feature_names, map(test, cat_feature_names)))

然后您可以使用df_dict[col_name] 访问每个数据帧。

【讨论】:

以上是关于将数据帧列表拆分为多个数据帧的主要内容,如果未能解决你的问题,请参考以下文章

将数据帧拆分为多个数据帧

如何将数据帧拆分为多个数据帧,其中每个数据帧包含相等但随机的数据[重复]

Pandas:按行数将数据帧拆分为多个数据帧

如何使用 R 中的条件语句将数据帧拆分为多个数据帧

Scala:我如何根据行数将数据帧拆分为多个 csv 文件

有啥方法可以将大约 16GB 的 SAS 文件拆分为 Python 中的多个文件/数据帧?