#python #pandas #dictionary #timestamp
#python #pandas #словарь #временная метка
Вопрос:
Допустим, у меня есть этот словарь (с использованием метки времени pandas):
d = {Timestamp('2020-06-30 00:00:00'): {'intangibleAssets': 295, 'capitalSurplus': 415},Timestamp('2020-03-30 00:00:00'): {'intangibleAssets': 400, 'capitalSurplus': 50}}
Как я могу извлечь одно значение, например, 295, расположенное в d[«Метка времени(‘2020-06-30 00:00:00’)»][» Нематериальные активы»]?
Большое спасибо!
Ответ №1:
Используйте pd.Timestamp
, потому что наш тип ключа словаря pd.Timestamp
не str
.
import pandas as pd
d[pd.Timestamp('2020-06-30 00:00:00')]["intangibleAssets"]
295
Ответ №2:
Поскольку вы используете pandas, вы можете преобразовать во фрейм данных и использовать loc
или .iloc
, передавая интересующие вас строку и столбец:
с .loc
:
d = {'2020-06-30 00:00:00': {'intangibleAssets': 295, 'capitalSurplus': 415},'2020-03-30 00:00:00': {'intangibleAssets': 400, 'capitalSurplus': 50}}
df = pd.DataFrame(d).loc['intangibleAssets','2020-06-30 00:00:00']
df
295
или iloc
:
d = {'2020-06-30 00:00:00': {'intangibleAssets': 295, 'capitalSurplus': 415},'2020-03-30 00:00:00': {'intangibleAssets': 400, 'capitalSurplus': 50}}
df = pd.DataFrame(d).iloc[0,0]
df
295
Комментарии:
1. Спасибо, это здорово, но, к сожалению, у меня много dict `, каждый в разном порядке…
Ответ №3:
Приведенная ниже функция является общей и может быть реализована в любом количестве словарей.
Чтобы получить ключи:
def matchingKeys(dictionary, searchString):
return [key for key,val in dictionary if searchString in val]
Чтобы получить значения:
def matchingValues(dictionary, searchString):
return [val for key,val in dictionary if searchString in val]
Чтобы получить оба:
def matchingElements(dictionary, searchString):
return {key:val for key,val in dictionary if searchString in val}