Как преобразовать словарь данных в кадр данных? - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть словарь с несколькими ключами, который содержит значение фрейма данных, который выглядит ниже и может иметь различное количество индексов.

'key1':

            colB
    colA   
    str1       3
    str2       4
    str3       5

'key2':

            colB
    colA   
    str2       3
    str3       4
    str5       5

'key3':

            colB
    colA   
    str4       3
    str5       4
    str6       5

Я хотел бы знать, как создать фрейм данныхэто выглядит как

        str1   str2   str3  ...   str 6
key1     3       4      5    ..    NaN
key2    NaN      3      4    ..    NaN     
key3    NaN     NaN    NaN   ..     5     

с 'NaN', когда значение отсутствует.

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

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Я думаю, что вам нужно только concat и unstack уведомление d это ваш dict

pd.concat(d).colB.unstack()
Out[663]: 
colA  str1  str2  str3  str4  str5  str6
k1     3.0   4.0   5.0   NaN   NaN   NaN
k2     NaN   3.0   4.0   NaN   5.0   NaN
k3     NaN   NaN   NaN   3.0   4.0   5.0
0 голосов
/ 28 декабря 2018

См. Пример кода:

import pandas as pd
key1 = {'str1':3,'str2':4,'str3':5}
key2 = {'str2':3,'str3':4,'str5':5}
key3 = {'str4':3,'str5':4,'str6':5}

df1=pd.DataFrame.from_dict(key1, orient='index')
df1.rename(columns={0:'key1'},inplace=True)
df2=pd.DataFrame.from_dict(key2, orient='index')
df2.rename(columns={0:'key2'},inplace=True)
df3=pd.DataFrame.from_dict(key3, orient='index')
df3.rename(columns={0:'key3'},inplace=True)

df = pd.concat([df1,df2,df3],axis=1)
df_final=df.T
df_final.head()

Код довольно прост, пожалуйста, дайте мне знать, если вам нужно больше объяснений.

0 голосов
/ 28 декабря 2018

Вы можете сделать это, используя pandas.concat().Смотрите здесь документацию Concat Documentation

Например Допустим, ваш словарь называется my_dict, вы можете выполнить следующий код:

pd.concat(my_dict.values())

Предполагается, что вы ужеимпортные панды как pd.См. Документацию для параметров, встроенных в concat.

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

pd.unstack()

, чтобы получить значения мультииндексов в качестве заголовков строк.,Или просто pd.df.rename()

Чтобы дать вам больше советов, было бы полезно иметь код для генерации исходного кадра данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...