计算dict和pandas

时间:2017-03-28 13:59:02

标签: pandas dictionary

我仍然是pandas和python的新手,并希望计算单个dict中多个DataFrame中相同变量组合的出现次数。

我创建了一个由六个df组成的字典。每个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

我想知道特定指数在整个字典中的相关总次数以及年份(关键)和个别相关性。理想情况下,输出看起来像这样(为了空间考虑而截断整数):

DO-PSPCp PT-WFrTo 5 1985,1990,1995,2000 -0.06,-0.068,-0.07,-0.06,-0.06
DO-PSPCp PT-WSWFr 2 1985,2000 -0.067,-0.07

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

for i in list:

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

    HighCorr[i] = HighCorr.to_frame()

1 个答案:

答案 0 :(得分:0)

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

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']

我无法弄清楚你需要什么输出格式,所以你必须自己从这里拿出来......