如何忽略听写理解中丢失的键?
How can I ignore missing keys in a dict comprehension?
我正在尝试使用 DataFrame 中的索引作为键来计算字典中特定值的实例数。然而,字典键集中缺少一些 DataFrame 索引。我怎样才能构建字典理解来克服这个问题?
import pandas as pd
df = pd.DataFrame({'Date': ['2022-02-14', '2022-02-14', '2022-02-14', '2022-02-14', '2022-02-14'],
'count': [10, 10, 10, 9, 9],},
index = ['NNI', 'NVEC', 'IPA', 'LYTS', 'MYN'])
df
Date count
NNI 2022-02-14 10
NVEC 2022-02-14 10
IPA 2022-02-14 10
LYTS 2022-02-14 9
MYN 2022-02-14 9
dct = {'NNI' : pd.DataFrame({'s': [-1, -1, -1],
'count': [13, 11, 10]},
index =['2007-07-13', '2019-09-18', '2016-08-01']),
'NVEC' : pd.DataFrame({'s': [-1, -1, -1],
'count': [12, 10, 9]},
index =['2012-10-09', '2018-10-01', '2022-02-01'])
}
dct
{'NNI': s count
2007-07-13 -1 13
2019-09-18 -1 11
2016-08-01 -1 10,
'NVEC': s count
2012-10-09 -1 12
2018-10-01 -1 10
2022-02-01 -1 9}
我尝试了下面的方法,但没有成功。
{k:len(dct[k]['count']) for k in df.index if k in df.index}
KeyError Traceback (most recent call last)
<ipython-input-201-10244dbbde59> in <module>
----> 1 {k:len(dct[k]['count']) for k in df.index if k in df.index}
<ipython-input-201-10244dbbde59> in <dictcomp>(.0)
----> 1 {k:len(dct[k]['count']) for k in df.index if k in df.index}
KeyError: 'IPA'
你的 if
子句应该包含 dct
而不是 df.index
如果我理解正确的话
{k:len(dct[k]['count']) for k in df.index if k in dct.keys()}
应该可以。
如果您的字典非常大 - 您可能希望先获取所有键然后遍历它们,例如:
dct_keys = dct.keys()
{k:len(dct[k]['count']) for k in df.index if k in dct_keys}
我正在尝试使用 DataFrame 中的索引作为键来计算字典中特定值的实例数。然而,字典键集中缺少一些 DataFrame 索引。我怎样才能构建字典理解来克服这个问题?
import pandas as pd
df = pd.DataFrame({'Date': ['2022-02-14', '2022-02-14', '2022-02-14', '2022-02-14', '2022-02-14'],
'count': [10, 10, 10, 9, 9],},
index = ['NNI', 'NVEC', 'IPA', 'LYTS', 'MYN'])
df
Date count
NNI 2022-02-14 10
NVEC 2022-02-14 10
IPA 2022-02-14 10
LYTS 2022-02-14 9
MYN 2022-02-14 9
dct = {'NNI' : pd.DataFrame({'s': [-1, -1, -1],
'count': [13, 11, 10]},
index =['2007-07-13', '2019-09-18', '2016-08-01']),
'NVEC' : pd.DataFrame({'s': [-1, -1, -1],
'count': [12, 10, 9]},
index =['2012-10-09', '2018-10-01', '2022-02-01'])
}
dct
{'NNI': s count
2007-07-13 -1 13
2019-09-18 -1 11
2016-08-01 -1 10,
'NVEC': s count
2012-10-09 -1 12
2018-10-01 -1 10
2022-02-01 -1 9}
我尝试了下面的方法,但没有成功。
{k:len(dct[k]['count']) for k in df.index if k in df.index}
KeyError Traceback (most recent call last)
<ipython-input-201-10244dbbde59> in <module>
----> 1 {k:len(dct[k]['count']) for k in df.index if k in df.index}
<ipython-input-201-10244dbbde59> in <dictcomp>(.0)
----> 1 {k:len(dct[k]['count']) for k in df.index if k in df.index}
KeyError: 'IPA'
你的 if
子句应该包含 dct
而不是 df.index
如果我理解正确的话
{k:len(dct[k]['count']) for k in df.index if k in dct.keys()}
应该可以。
如果您的字典非常大 - 您可能希望先获取所有键然后遍历它们,例如:
dct_keys = dct.keys()
{k:len(dct[k]['count']) for k in df.index if k in dct_keys}