来自pandas数据框的嵌套字典

时间:2016-07-11 13:10:27

标签: python pandas dictionary nested

我在pandas数据框中有以下数据(见下文)。

我想把它变成一个看起来像这样的字典:

node*  insert(node * root, int value)
    { node* n=  root;
       node* a=new node();
      if( a == NULL )
    { cout<<" no memory  \n " ; exit(0); } 
       a->data=value;
       a->left=a->right=NULL;
     if(n!=NULL)   
     {while (true )  
       { if(n->data > value  )
             {   if( n->left!=NULL )   
                              {n=n->left;} 
                 else 
                     { 
                          n->left=a; 
                          return root; 
                      }                     
               }
          else if(n->data < value  )
              {  if (  n->right!=NULL ) 
                           {n=n->right;}
                 else  
                      {
                         n->right = a;
                         return root;
                        }
              }

       }
     }
     else
     { 
    return  a;   
     } 
    }

我知道pandas'my_dict = { 'AB': { 'city1': (0.000000, 0.000000), 'city2' : (0.100000, 0.200000), 'city3' : (0.200000, 0.400000) } 'BC': { 'city4': (0.300000, 0.600000), 'city5' : (0.400000, 0.800000), } } 方法,但无法强制执行此操作。

to_dict()

1 个答案:

答案 0 :(得分:2)

您可以先zipped ziplat创建列lng,然后使用to_dict groupby创建#python 3 need convert to list df['zipped'] = list(zip(df.lat, df.lng)) print (df) iso city lat lng zipped 0 AB city1 0.0 0.0 (0.0, 0.0) 1 AB city2 0.1 0.2 (0.1, 0.2) 2 AB city3 0.2 0.4 (0.2, 0.4) 3 BC city4 0.3 0.6 (0.3, 0.6) 4 BC city5 0.4 0.8 (0.4, 0.8) d = df.groupby('iso').apply(lambda x: x.set_index('city')['zipped'].to_dict()).to_dict() print (d) {'AB': {'city3': (0.20000000000000001, 0.40000000000000002), 'city1': (0.0, 0.0), 'city2': (0.10000000000000001, 0.20000000000000001)}, 'BC': {'city4': (0.29999999999999999, 0.59999999999999998), 'city5': (0.40000000000000002, 0.80000000000000004)}}

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>