Python 根据存储在数组中的值筛选字典

Python 根据存储在数组中的值筛选字典,python,dictionary,Python,Dictionary,我有一本以下格式的词典: data={'city':np.array(['chicago','champaign','kansas city','dallas','champaign','chicago']), 'state':np.array(['IL','IL','KA','TX','IL','IL']), 'transaction_dt':np.array(['1-1-2018','2-1-2018','3-1-2018','7-1-2018','1-1-2018','2-1-2018

我有一本以下格式的词典:

data={'city':np.array(['chicago','champaign','kansas city','dallas','champaign','chicago']),
  'state':np.array(['IL','IL','KA','TX','IL','IL']), 'transaction_dt':np.array(['1-1-2018','2-1-2018','3-1-2018','7-1-2018','1-1-2018','2-1-2018'])}

我想获取在IL状态下发生的所有事务的事务_dt。我怎样才能在字典里做到这一点?(我知道如何在pd数据帧中执行此操作,但字典是如此不同!!)

您可以使用布尔掩码:

import numpy as np

data = {'city': np.array(['chicago','champaign','kansas city','dallas','champaign','chicago']),
        'state': np.array(['IL','IL','KA','TX','IL','IL']),
        'transaction_dt': np.array(['1-1-2018','2-1-2018','3-1-2018','7-1-2018','1-1-2018','2-1-2018'])}

res = data['transaction_dt'][data["state"] == "IL"]
输出:

>>> res
array(['1-1-2018', '2-1-2018', '1-1-2018', '2-1-2018'],
      dtype='<U8')
>res
阵列(['1-1-2018','2-1-2018','1-1-2018','2-1-2018'],

dtype='我省略了这是
np.array
,但它们的工作原理相同

In [1]: data = {
   ...:     'city':['chicago','champaign','kansas city','dallas','champaign','chicago'],
   ...:     'state':['IL','IL','KA','TX','IL','IL'],
   ...:     'transaction_dt':['1-1-2018','2-1-2018','3-1-2018','7-1-2018','1-1-2018','2-1-2018']
   ...: }

In [2]: desired_transactions = [transaction_dl
   ...:                         for state, transaction_dl in zip(data['state'], data['transaction_dt'])
   ...:                         if state == 'IL']
   ...:

In [3]: desired_transactions
Out[3]: ['1-1-2018', '2-1-2018', '1-1-2018', '2-1-2018']

你在这里使用
numpy.ndarray
对象有什么特别的原因吗?我在我的问题中使用了这个数据集,只是作为一个例子,但我正在处理的实际数据使用numpy.ndarray。所以是的,原因是这就是我获得数据的格式为什么不把它放在数据框中?不能!如果可以的话,我会的!#