Соедините столбцы нескольких фреймов данных в новый фрейм данных - PullRequest
0 голосов
/ 02 марта 2020

У меня есть словарь данных. Каждый из этих фреймов данных имеет столбец defrost_temperam. Я хочу сделать один новый фрейм данных, который собирает все эти столбцы, сохраняя их как отдельные столбцы.

Вот что я делаю сейчас:

merged_defrosts = pd.DataFrame()
for key in df_dict.keys():
    merged_defrosts[key] = df_dict[key]["defrost_temperature"]

Но, к сожалению, только первый столбец заполнен правильно. Другие столбцы заполнены NaN, как показано на скриншоте введите описание изображения здесь

Разные оттайки не обязательно имеют одинаковую длину. (четвертый кадр данных - 108 строк, остальные - 109 строк)

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Вы можете попробовать pd.merge для индекса большего размера.

df_result = pd.DataFrame()
for i, df in enumerate(df_dict.values()):
    s1, s2 = f'_{i}', f'_{i+1}'
    m1, m2 = df_result.shape[0], df.shape[0]
    if m1 == 0:
        df_result = df
    elif m1 >= m2:
        df_result = df_result.merge(df, how=left, left_index=True, right_index=True, suffixes=(s1, s2))
    else:
        df_result = df.merge(df_result, how=left, left_index=True, right_index=True, suffixes=(s2, s1))

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

0 голосов
/ 02 марта 2020

Можно попытаться объединить кадры данных по горизонтали после того, как общий столбец станет индексом:

merged_defrosts = pd.concat([df.set_index("defrost_temperature") for df in df_dict.values()]
                            ).reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...