Я составляю список серий pandas, где индексом является температура, а данными - некоторый объем термодинамической фазы c solid, присутствующей при указанных температурах. Каждый раз, когда я запускаю симуляцию, я не знаю, сколько фаз будет возвращено, поэтому я добавляю их в список серий pandas, которые будут объединены по столбцам. Например, допустим, я заинтересован в фазах, присутствующих в диапазоне от 400 до 900 градусов, и хочу заполнить фрейм данных, индексом которого являются все температуры.
# data.values() is an object whose values x's are temperature and y's are amount of some phase.
lst_phases = []
for d in data.values():
idx = pd.Index(d.temp)
idx.drop_duplicates(keep='first')
## sometimes there can be duplicate temperatures with an empty index in between each.
## ex. temp = [473, 478, 480, , 480, 483....] # so I drop the first, I am not sure what to do abut the empty index or if that is my issue.
s = pd.Series(d.phase, index=idx, name=d.name)
lst_phases.append(s)
result = pd.concat(lst_phases, axis=1)
возвращает:
ValueError: cannot reindex from a duplicat axis
Я также пытался выполнить слияние следующим образом.
pd.merge(lst_phases[0], lst_phases[1], how='outer', left_index='True', right_index='True')
Это возвращает полное внешнее соединение, так что мой индекс температур - это все температуры в порядке и именно то, чего я пытаюсь достичь. Проблема в том, что трудно объединить список фаз, особенно когда я не знаю, сколько фаз / pd. Серий у меня будет для каждой симуляции