在Python中查找词典

2024-10-03 06:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图查一本词典,但却面临着困难。你知道吗

数据是一个字典,如下所示:

data={'CME':{u'JPY': 0.525, u'USD': 3.305, u'CNH': 4.805},
'EUREX':{u'USD': 3.305, u'GBP': 1.545, u'EUR': 0.375},
'GOODM':{u'KRW': 0.0},
'HKEX':{u'USD': 3.395, u'HKD': 3.565, u'CNH': 4.895},
'KIS':{u'KRW': 0.0},
'NLFX':{u'USD': 3.305},
'OSE':{u'JPY': 0.615},
'SGX':{u'JPY': 0.725, u'USD': 2.605, u'SGD': 2.575, u'CNH': 5.005, u'CNY': 0.0},
'TOCN':{u'JPY': 0.525}}

边距是一个数据帧,可以通过以下方式复制:

margins = pd.DataFrame([{'balance_date': '2019-06-24', 'opp_pty_cd': 'GOODM','cur': 'KRW', 'amt':9714190.0,'acct': 30}, {'balance_date': '2019-06-24', 'opp_pty_cd': 'KIS','cur': 'KRW', 'amt':1858386321.,'acct': 30}])

尝试了以下操作:

当我这样做:data['GOODM']['KRW'],我得到0。但是,当我这样做:data[margins['opp_pty_cd']][margins['cur']]时,我得到:

KRW    NaN
KRW    NAN

margins['cur'].map(margins['opp_pty_cd'].map(data)),仍然是相同的数据。你知道吗

我正在使用数据帧数据来查找字典,这是行不通的。你知道吗

根据下面的注释,尝试将数据更改为dataframe作为df_dict=pd.DataFrame.from_dict(dict)。但在以下情况下,我仍然无法访问数据:

data[margins['opp_pty_cd']][margins['cur']]

需要一些指导。你知道吗


Tags: 数据data字典cddictptyusdcur
2条回答
dict={'CME':{u'JPY': 0.525, u'USD': 3.305, u'CNH': 4.805},
'EUREX':{u'USD': 3.305, u'GBP': 1.545, u'EUR': 0.375},
'GOODM':{u'KRW': 0.0},
'HKEX':{u'USD': 3.395, u'HKD': 3.565, u'CNH': 4.895},
'KIS':{u'KRW': 0.0},
'NLFX':{u'USD': 3.305},
'OSE':{u'JPY': 0.615},
'SGX':{u'JPY': 0.725, u'USD': 2.605, u'SGD': 2.575, u'CNH': 5.005, u'CNY': 0.0},
'TOCN':{u'JPY': 0.525}}

df_dict=pd.DataFrame.from_dict(dict)
print(df_dict)
       CME  EUREX  GOODM   HKEX  KIS   NLFX    OSE    SGX   TOCN
CNH  4.805    NaN    NaN  4.895  NaN    NaN    NaN  5.005    NaN
CNY    NaN    NaN    NaN    NaN  NaN    NaN    NaN  0.000    NaN
EUR    NaN  0.375    NaN    NaN  NaN    NaN    NaN    NaN    NaN
GBP    NaN  1.545    NaN    NaN  NaN    NaN    NaN    NaN    NaN
HKD    NaN    NaN    NaN  3.565  NaN    NaN    NaN    NaN    NaN
JPY  0.525    NaN    NaN    NaN  NaN    NaN  0.615  0.725  0.525
KRW    NaN    NaN    0.0    NaN  0.0    NaN    NaN    NaN    NaN
SGD    NaN    NaN    NaN    NaN  NaN    NaN    NaN  2.575    NaN
USD  3.305  3.305    NaN  3.395  NaN  3.305    NaN  2.605    NaN


print(df_dict['GOODM']['KRW'])
0.0

这可能不是最有效的方法,但对于每一行,您可以使用:

data[row.opp_pty_cd][row.cur]

举个例子:

>>> import pandas as pd
>>> data={'CME':{u'JPY': 0.525, u'USD': 3.305, u'CNH': 4.805},
... 'EUREX':{u'USD': 3.305, u'GBP': 1.545, u'EUR': 0.375},
... 'GOODM':{u'KRW': 0.0},
... 'HKEX':{u'USD': 3.395, u'HKD': 3.565, u'CNH': 4.895},
... 'KIS':{u'KRW': 0.0},
... 'NLFX':{u'USD': 3.305},
... 'OSE':{u'JPY': 0.615},
... 'SGX':{u'JPY': 0.725, u'USD': 2.605, u'SGD': 2.575, u'CNH': 5.005, u'CNY': 0.0},
... 'TOCN':{u'JPY': 0.525}}
>>> margins = pd.DataFrame([{'balance_date': '2019-06-24', 'opp_pty_cd': 'GOODM','cur': 'KRW', 'amt':9714190.0,'acct': 30}, {'balance_date': '2019-06-24', 'opp_pty_cd': 'KIS','cur': 'KRW', 'amt':1858386321.,'acct': 30}])
>>> margins
   acct           amt balance_date  cur opp_pty_cd
0    30  9.714190e+06   2019-06-24  KRW      GOODM
1    30  1.858386e+09   2019-06-24  KRW        KIS
>>> for row in margins[['opp_pty_cd', 'cur']].itertuples():
...     print(data[row.opp_pty_cd][row.cur])
... 
0.0
0.0

如果将data转换为数据帧,可能有更好的方法。你知道吗

相关问题 更多 >