내 사용을 위해 (xy 위치가있는 노드 이름) 가장 유용하고 직관적 인 @ user4179775의 답변을 찾았습니다.
import pandas as pd
df = pd.read_csv('glycolysis_nodes_xy.tsv', sep='\t')
df.head()
nodes x y
0 c00033 146 958
1 c00031 601 195
...
xy_dict_list=dict([(i,[a,b]) for i, a,b in zip(df.nodes, df.x,df.y)])
xy_dict_list
{'c00022': [483, 868],
'c00024': [146, 868],
... }
xy_dict_tuples=dict([(i,(a,b)) for i, a,b in zip(df.nodes, df.x,df.y)])
xy_dict_tuples
{'c00022': (483, 868),
'c00024': (146, 868),
... }
추가
나는 나중에 다른 관련 작업을 위해이 문제로 돌아 왔습니다. 여기에 [우수한] 수용된 답변을보다 가깝게 반영하는 접근 방식이 있습니다.
node_df = pd.read_csv('node_prop-glycolysis_tca-from_pg.tsv', sep='\t')
node_df.head()
node kegg_id kegg_cid name wt vis
0 22 22 c00022 pyruvate 1 1
1 24 24 c00024 acetyl-CoA 1 1
...
Pandas 데이터 프레임을 [list], {dict}, {dict of {dict}}, ...
수락 된 답변 당 :
node_df.set_index('kegg_cid').T.to_dict('list')
{'c00022': [22, 22, 'pyruvate', 1, 1],
'c00024': [24, 24, 'acetyl-CoA', 1, 1],
... }
node_df.set_index('kegg_cid').T.to_dict('dict')
{'c00022': {'kegg_id': 22, 'name': 'pyruvate', 'node': 22, 'vis': 1, 'wt': 1},
'c00024': {'kegg_id': 24, 'name': 'acetyl-CoA', 'node': 24, 'vis': 1, 'wt': 1},
... }
제 경우에는 Pandas 데이터 프레임에서 선택한 열을 사용하여 동일한 작업을 수행하고 싶었 기 때문에 열을 슬라이스해야했습니다. 두 가지 접근 방식이 있습니다.
- 직접:
(참조 : pandas를 키 값에 사용되는 열을 정의하는 사전으로 변환 )
node_df.set_index('kegg_cid')[['name', 'wt', 'vis']].T.to_dict('dict')
{'c00022': {'name': 'pyruvate', 'vis': 1, 'wt': 1},
'c00024': {'name': 'acetyl-CoA', 'vis': 1, 'wt': 1},
... }
- "간접 :"먼저 Pandas 데이터 프레임에서 원하는 열 / 데이터를 슬라이스합니다 (다시 두 가지 접근 방식).
node_df_sliced = node_df[['kegg_cid', 'name', 'wt', 'vis']]
또는
node_df_sliced2 = node_df.loc[:, ['kegg_cid', 'name', 'wt', 'vis']]
그런 다음 사전 사전을 만드는 데 사용할 수 있습니다.
node_df_sliced.set_index('kegg_cid').T.to_dict('dict')
{'c00022': {'name': 'pyruvate', 'vis': 1, 'wt': 1},
'c00024': {'name': 'acetyl-CoA', 'vis': 1, 'wt': 1},
... }
Dataframe.to_dict()
?