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

2024-05-16 23:42:57 发布

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

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

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数据帧中执行,但字典是如此不同!!)


Tags: citydata字典格式npdtarray事务
2条回答

我省略了这是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']

可以使用布尔掩码:

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')

相关问题 更多 >