Перебирая словарь данных и считая столбец - PullRequest
0 голосов
/ 03 апреля 2020

Мне интересно, может ли кто-нибудь помочь. У меня есть несколько данных, хранящихся в словаре. Я просто хочу получить доступ к каждому из этих фреймов данных и посчитать значения в столбце, в столбце у меня есть 10 букв. В первом кадре данных 5bs и 5 as. Например, результат подсчета, который я ожидаю получить, равен a = 5 и b = 5. Однако для каждого кадра данных это количество будет отличаться, поэтому я хотел бы сохранить выходные данные этих значений либо в другом словаре, либо в отдельной переменной.

Словарь называется Dict, а имя столбца во всех информационных фреймах называется буквами. Я пытался сделать это путем доступа к ключам в словаре, но не могу заставить его работать. Часть того, что я попробовал, показана ниже.

import pandas as pd for key in Dict: Count=pd.value_counts(key['letters'])

Счетчик здесь в идеале будет меняться с каждым новым выводом счетчика для сохранения в новую переменную

Упрощенный пример (фактические размеры кадра данных макс. 5000,63 ) одного из 14 кадров данных в словаре было бы

`d = {'col1': [1, 2,3,4,5,6,7,8,9,10], ' буквы ': [' a ',' a ',' a ',' b ',' b ',' a ',' b ',' a ',' b ',' b ']}

df = pd.DataFrame (data = d) `

Другими кадрами данных являются имена df2, df3, df4 et c

Надеюсь, это имеет смысл. Любая помощь будет высоко ценится.

Спасибо

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Самая простая вещь, вероятно, это словарь:

d = {'col1': [1, 2,3,4,5,6,7,8,9,10], 'letters': ['a','a','a','b','b','a','b','a','b','b']}
d2 = {'col1': [1, 2,3,4,5,6,7,8,9,10,11], 'letters': ['a','a','a','b','b','a','b','a','b','b','a']}

df = pd.DataFrame(data=d)
df2 = pd.DataFrame(d2)

df_dict = {'d': df, 'd2': df2}

new_dict = {k: v['letters'].count() for k,v in df_dict.items()}

# out
{'d': 10, 'd2': 11}
1 голос
/ 03 апреля 2020

Если вы хотите получить доступ и к ключу, и к значениям при переборе словаря, вы должны использовать функцию items. Вы можете использовать другой словарь для хранения результатов:

letter_counts = {}
for key, value in Dict.items():
    letter_counts[key] = value["letters"].value_counts()

Вы также можете использовать словарь, чтобы сделать это в 1 строке:

letter_counts = {key: value["letters"].value_counts() for key, value in Dict.items()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...