从dict和pandas计算事件

从dict和pandas计算事件,pandas,dictionary,Pandas,Dictionary,我对pandas和python还是一个新手,我想计算一下在一个dict中跨多个数据帧出现的相同变量组合的总数 我创建了一个包含六个df的dict。每个df的键是一年(1985、1990等),由一个索引和一行整数组成。索引由两个变量(两个字符串)组成,并用逗号分隔,而整数表示两个变量之间的相关性: DO-PSPCp PT-WFrTo -0.067934 PT-WSWFr -0.067903 PT-Wtotl -0.060489 PT-WSWTo

我对pandas和python还是一个新手,我想计算一下在一个dict中跨多个数据帧出现的相同变量组合的总数

我创建了一个包含六个df的dict。每个df的键是一年(1985、1990等),由一个索引和一行整数组成。索引由两个变量(两个字符串)组成,并用逗号分隔,而整数表示两个变量之间的相关性:

DO-PSPCp PT-WFrTo -0.067934
         PT-WSWFr -0.067903
         PT-Wtotl -0.060489
         PT-WSWTo -0.060485
DO-SSPop DO-PSPCp -0.050703
PS-SWPop DO-SSPCp -0.048588
我想知道一个特定指数在整个dict中相关的总次数,以及年份(关键)和个体相关性。理想情况下,输出应如下所示(出于空间考虑,整数被截断):

用于生成列表的代码使用调用相关函数(get_correlation),使用由包含上述变量的较大df和每对列所需的最小观察数(number)组成的列表,并传回上面列出的计算:

for i in list:

    HighCorr = (get_correlations(list[i],number))

    HighCorr[i] = HighCorr.to_frame()

您可以首先将dict转换为一个巨大的数据帧:

df = pd.concat(dictionary)
这将返回一个多索引数据帧,字典键是最高级别的索引

接下来,您可以将索引设置回原始格式:

df = df.reset_index().set_index(['String1', 'String2'])
由于需要获取特定索引的信息,请使用:

df.loc['Specific_str1', 'Specific_str2']
通过执行各种查询,您可以获得所需的信息:

number_of_times = df.loc['Specific_str1', 'Specific_str2'].shape[0]

# The dictionary key will be called 'level_0' when you re-index it
dates = df.loc['Specific_str1', 'Specific_str2']['level_0']

corr = df.loc['Specific_str1', 'Specific_str2']['Correlation']

我不太清楚您需要什么样的输出格式,所以您必须自己从这里获取。

您能否发布一些代码,说明如何生成与您拥有的类似的dict/pandas数据帧?当然,希望这对您有所帮助Arco Bast:谢谢您的帮助。我面临的挑战是,我不想手动键入每个变量(“特定的str1”等),因为这些变量可能会随着不同的相关标准而变化。@Newbie14,我仍然不太明白您需要什么。如果有相关条件,请使用df[df['correlation'==criteria]]].index返回所需的索引。如果需要所有内容,只需循环遍历索引,并为每个索引返回相关输出(基于上述3个查询)。
number_of_times = df.loc['Specific_str1', 'Specific_str2'].shape[0]

# The dictionary key will be called 'level_0' when you re-index it
dates = df.loc['Specific_str1', 'Specific_str2']['level_0']

corr = df.loc['Specific_str1', 'Specific_str2']['Correlation']