动态地为每个字典键()分隔数据帧

时间:2018-05-07 18:39:03

标签: python-3.x pandas dataframe

我能够为dict的每个键创建单独的DF。然而,想知道一种更恐怖的方式,是可能的: 我的代码正在运行。

    dataDct.keys()
    dict_keys(['PETR4_Dai', 'PETR4_H1_', 'PETR4_M15', 'PETR4_M5_', 
               'PETR4_Mon','PETR4_Wee'])

     try:
    # Petr4
     dfp5 = dataDct['PETR4_M5_'].drop(['<TICKVOL>','<SPREAD>'],axis=1)
     dfp15 = dataDct['PETR4_M15'].drop(['<TICKVOL>','<SPREAD>'],axis=1)
     dfph1 = dataDct['PETR4_H1_'].drop(['<TICKVOL>','<SPREAD>'],axis=1)
     dfpd = dataDct['PETR4_Dai'].drop(['<TICKVOL>','<SPREAD>'],axis=1)
     dfpw = dataDct['PETR4_Wee'].drop(['<TICKVOL>','<SPREAD>'],axis=1)
     dfpm = dataDct['PETR4_Mon'].drop(['<TICKVOL>','<SPREAD>'],axis=1)
     except:
         pass

因此,我试图让它变得更加恐怖:

      #name of the DF:
      lables = list(dataDct.keys())

      df = []
      for i in dataDct.keys():
           df.append(dataDct[i].drop(['<TICKVOL>','<SPREAD>'],axis=1))

      listup = pd.DataFrame()
      for label,value in zip(lables,df):
             listup[label] = [(value)]

      or 
      listup = pd.DataFrame()
      for label,value in zip(lables,df):
             listup[label] = [pd.DataFrame.from_dict(value)]

所有案例都不起作用,我也尝试过列表和词典。没有成功。我也无法将它分开。

想知道如何为dict的每个键创建DF。使用键作为DF的名称; 任何帮助都会被贬低!提前谢谢!

1 个答案:

答案 0 :(得分:0)

我能想到做你想做的事的唯一方法是创建一个新的字典,其字符与预先存在的字典中的键相同,其值为DataFrames。从这个意义上讲,您可以使用名称(键)动态创建DataFrames(值),并随意调用它们。 (您甚至可以将.name分配给与键名匹配的DataFrame。)

import pandas as pd

new_dict = {}
for key in dataDct.keys():
    new_dict[key] = pd.DataFrame()
    new_dict[key].name = key