Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据列的条件从单个数据帧中提取多个不同的数据帧_Python_Pandas_Function - Fatal编程技术网

Python 根据列的条件从单个数据帧中提取多个不同的数据帧

Python 根据列的条件从单个数据帧中提取多个不同的数据帧,python,pandas,function,Python,Pandas,Function,我有一个大约600行的熊猫数据框,其中一列名为“PAGE_NAME”,包含8个唯一的字符串值。以下是此列中的8个唯一字符串值: my_list_of_strings = ['Demographics', 'SummaryMeasuresOfHealth', 'LeadingCausesOfDeath', 'MeasuresOfBirthAndDeath', 'RelativeHealthImportance', 'VunerablePopsAndEnvHealth', 'PreventiveSe

我有一个大约600行的熊猫数据框,其中一列名为“PAGE_NAME”,包含8个唯一的字符串值。以下是此列中的8个唯一字符串值:

my_list_of_strings = ['Demographics', 'SummaryMeasuresOfHealth', 'LeadingCausesOfDeath', 'MeasuresOfBirthAndDeath', 'RelativeHealthImportance', 'VunerablePopsAndEnvHealth', 'PreventiveServicesUse', 'RiskFactorsAndAccessToCare']
此数据框中还有6列

我想做的是创建8个新的数据帧,每个字符串一个,其中8个新数据帧中的每一个都将只包括“PAGE_NAME”列中给定字符串所在的行

我想为8个新数据帧中的每一个分配一个变量名,其中包括字符串:类似于人口统计、SummaryMeasuresOfHealth等等

我能够编写一个函数(如下)来创建一个数据帧列表,但(1)我不知道如何提取8个独立的数据帧,(2)我不知道如何使用适当的字符串作为变量名的一部分来命名它们

def make_pagename_dataframes(page_name_list):
    list_of_dfs = []
    for i in page_name_list:
list_of_dfs.append(original_df.loc[original_df['PAGE_NAME'] == i])
    return list_of_dfs

list_of_new_dfs = make_pagename_dataframes(my_list_of_strings)

您可以使用
groupby

dict_of_dfs = {k: v for k, v in original_df.groupby('PAGE_NAME')}
或者他们的名单

list_of_dfs = [v for k, v in original_df.groupby('PAGE_NAME')]
获取您的8个数据帧。请注意,我会多放一点,以防你有超过你所说的唯一数量的字符串。但是,如果您没有至少8个唯一字符串,则此操作将失败

d1, d2, d3, d4, d5, d6, d7, d8, *therest = (
    v for k, v in original_df.groupby('PAGE_NAME')
)

谢谢你的意见。是否可以从dfs的dict_中提取8个独立的数据帧,以便我有8个不同的数据帧对象?最后一个问题:是否有一种简单的方法可以将8个列表中的字符串名称指定为数据帧名称?因此,与d1、d2、d3、d4、d5、d6、d7、d8、*therest=(v代表k,v代表原始的“分组依据”(“页面名称”)…)不同,它将类似于人口统计数据、健康总结指标、导致死亡指标、风险因素和成功率指标,*therest==(v代表k,v在原始的_df.groupby('PAGE_NAME'))中)这通常被称为动态命名变量,通常被认为是不好的做法。最好的方法是使用第一个选项,将它们存储在字典中,并通过引用它们的键来引用它们。本质上,这类似于将变量名与名称空间一起使用,其中字典表示名称空间。这是一种更干净的最佳实践。看见