我在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()
答案 0 :(得分:2)
您可以先zipped
zip
和lat
创建列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>