Pandas объединить или объединить в списке pd.series. вдоль колонн. Серийные индексы могут перекрываться - PullRequest
0 голосов
/ 26 марта 2020

Я составляю список серий 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. Серий у меня будет для каждой симуляции

...