#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. Ладно, Шубхам Дхингра, это был один из лучших и самых ясных ответов, которые у меня когда-либо были, и это было такое хорошее объяснение. Спасибо, что нашли время объяснить мне это. с большим уважением