Словарь разделен на несколько строк на ключ - PullRequest
0 голосов
/ 23 января 2019

У меня проблемы с разделением строки в словаре на несколько строк в DataFrame для одного ключа.До сих пор я не мог найти правильное решение.Любая помощь приветствуется.

Следующий код может разбить строку на одну строку:

d_new = {k: dict(map(str.strip, x.split('||')) for x in v) for k, v in d.items()}

df = pd.DataFrame.from_dict(d_new, orient='index')

Мой словарь d выглядит следующим образом:

{'Key1': ['A||1234', 'A||1235', 'A||1236', 'B||4567', 'C||78910'],
 'Key2': ['A||165', 'A||135', 'B||888', 'B||1111']}

Я хочуразделить так, что Key1 имеет 3 строки (для трех разных аргументов для A), а Key2 имеет 2 строки.

Желаемый результат:

Key|A|B|C
Key1|1234|4567|78910
Key1|1235|4567|78910
Key1|1236|4567|78910
Key2|165|888|
Key2|135|1111|

Edit1: Извините, я не знаю, как сделать таблицу здесь.Я добавил желаемый результат настолько хорошо, насколько мог.

1 Ответ

0 голосов
/ 23 января 2019

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

d = {'Key1': ['A||1234', 'A||1235', 'A||1236', 'B||4567', 'C||78910'],
     'Key2': ['A||165', 'A||135', 'B||888', 'B||1111']}

from collections import defaultdict

def create_dataframe(k, x):
    dd = defaultdict(list)
    for item in x:
        key, value = item.split('||')
        dd[key].append(value)
    return pd.DataFrame.from_dict(dd, orient='index').T.assign(Key=k).ffill()

df = pd.concat(create_dataframe(*item) for item in d.items())

print(df)

      A     B      C   Key
0  1234  4567  78910  Key1
1  1235  4567  78910  Key1
2  1236  4567  78910  Key1
0   165   888    NaN  Key2
1   135  1111    NaN  Key2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...