/ / Не мога да разбера как да се приложат много ключови речници vals към колона на dataframe - python, pandas, dictionary, dataframe, iteration

Не мога да изясня как да се прилагат речници с многоезични речници обратно в колоната за данни - python, pandas, речник, dataframe, итерация

Имам речник с 2 ключа за всяка стойност 1 така:

Първоначален запис

Ключ: ("106338", "2006-12-27"), Стойност: []

След като се засели

Ключ: ("106338", "2006-12-27"), Стойност: [8, 7, 9, 8, 7]

Стойността за всяка двойка ключове е масивнякаква информация, която ми трябва дължината. Създадох този речник, като първо го пуснах в рамка с данни и генерирах двойки ключове и празни масиви за всеки уникален запис. След това отново се повтарях в него и населявах масивите с информацията, която ми трябва, като добавих стойности в края на всяка двойка ключове. Двойките ключове бяха генерирани от стойностите на реда. Първият елемент в ключа е Идентификационният номер на актива, а вторият е датата на актива. Тук е код за създаване на dict:

perm_dict = {}
for row in df_perm.itertuples():
perm_dict[str(row[1]),str(row[3])] = []

for row in df_perm.itertuples():
if row[6].to_datetime().date() < row[9].to_datetime().date() and row[9].to_datetime().date() < row[5].to_datetime().date():
perm_dict[str(row[1]), str(row[3])].append(row[10])

Моят проблем е, че сега трябва да се обадяСтойностите се връщат чрез двойките ключове чрез повторение на оригиналната рамка на данни, така че мога да взема моите дължини на масив и да направя нова колона от тях. Екранна снимка на DataFrame:

въведете описанието на изображението тук

Имам проблеми с изработването на решение в моятаглавата за прилагане на тези преброявания обратно към оригиналната рамка на данни като нова колона само за редовете с ключови съвпадения. Не мога да се върна обратно, за да ги добавя, защото тогава ще променя първоначалния си DF и прочетох, че е голям не-не. Всяка помощ, която всички може да бъде в състояние да предостави ще бъде много оценявам! Също така, моля lmk, ако трябва да включва повече информация, както мога да предоставят повече.

Edit1

Тук са изходите след изпълнението на предоставения код за разбиране на речника.

въведете описанието на изображението тук

Отговори:

1 за отговор № 1

Това може да е това, което търсите.

import pandas as pd

# sample data
d = {("106338", "2006-12-27"): [8, 7, 9, 8, 7]}
df = pd.DataFrame([["106338", "2006-12-27"]], columns=["Key1", "Key2"])

# first make dictionary mapping to length of list
d_len = {k: len(v) for k, v in d.items()}

# perform mapping
df["Len"] = list(map(d_len.get, (zip(*(df[col] for col in ("Key1", "Key2"))))))

# output
# Key1     Key2    Len
# 106338 2006-12-27 5