将数据帧列表拆分为多个数据帧
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]
访问每个数据帧。
【讨论】:
以上是关于将数据帧列表拆分为多个数据帧的主要内容,如果未能解决你的问题,请参考以下文章