python объединяет dfs и обращается к словарю

#python #dataframe #concatenation

Вопрос:

Я наткнулся на пробку.

В приведенном ниже коде я объединил два df, а затем захотел преобразовать его в словарь, чтобы провести некоторую очистку, а затем преобразовать его обратно в df.

Но когда я преобразую его обратно в df, кажется, что в нем есть только один из двух df, а не объединенная версия?

 #Concatinating the two df
opel_Concat = pd.concat([df,df2])


#Converting to dictionary
opel_Concat.to_dict()

#COnverting back to pd.df
opel_Df = pd.DataFrame.from_dict(opel_Dict)
 

[![введите описание изображения здесь][1]][1]

DF2 содержит 4328 rows × 17 columns

[![введите описание изображения здесь][2]][2]

Так что, похоже, он рассматривает только df1?

Ответ №1:

Если вы внимательно посмотрите, что происходит, когда мы преобразуем объединенный фрейм данных в словарь, вы увидите проблему.

Скажем, df1-это

    a  b
0  1  3
1  2  4
2  3  5
 

и df2-это

    a  b
0  2  9
1  4  8
2  5  7
3  6  6
 

Мы объединяем их, чтобы получить

    a  b
0  1  3
1  2  4
2  3  5
0  2  9
1  4  8
2  5  7
3  6  6
 

Обратите внимание на индекс? Да, это повторяется.

Теперь, что произойдет, когда я преобразую этот объединенный фрейм данных в dict?

 {'a': {0: 2, 1: 4, 2: 5, 3: 6}, 'b': {0: 9, 1: 8, 2: 7, 3: 6}}
 

Несмотря на то, что в объединенном фрейме данных всего 7 значений, здесь мы видим только 4, потому что индексы используются в качестве ключей словаря и перезаписываются при наличии дубликатов в индексе.

Таким образом, вы можете решить эту проблему,: concat_df.reset_index().to_dict()

Комментарии:

1. Ладно, Шубхам Дхингра, это был один из лучших и самых ясных ответов, которые у меня когда-либо были, и это было такое хорошее объяснение. Спасибо, что нашли время объяснить мне это. с большим уважением