Объедините два кадра данных Pandas рядом с результирующей длиной `max(df1, df2)`Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Объедините два кадра данных Pandas рядом с результирующей длиной `max(df1, df2)`

Сообщение Anonymous »

По сути, то, что я описал в заголовке.
Я пытаюсь объединить два кадра данных (т. е. df1 и df2), где они имеют разное количество столбцы (, df2=8) с различной длиной строки. (Различная длина строк связана с тем, что у меня есть сценарий, который разбивает два основных списка Excel на блоки в зависимости от условия даты).
Моя цель — объединить два кадра данных различной длины в один dataframe, где они оба начинаются с индекса 0, а не один за другим.
Что происходит сейчас:

Код: Выделить всё

     A  B  C  D
0    1  2 nan nan
1    3  4 nan nan
2  nan nan 5  6
3  nan nan 7  8
4  nan nan 9  10
Вот как мне хотелось бы:

Код: Выделить всё

     A  B  C  D
0    1  2  5  6
1    3  4  7  8
2  nan nan 9  10
Я пробовал много всего, но это последний код, который сработал (но с неверными результатами):

Код: Выделить всё

import pandas as pd

hours_df = pd.read_excel("hours.xlsx").fillna("")
hours_columns = hours_df.columns

material_df = pd.read_excel("material.xlsx").fillna("")
material_df = material_df.rename(columns={'Date': 'Material Date'})
material_columns = material_df.columns

breaker = False

temp = []
combined_df = pd.DataFrame()

last_date = "1999-01-01"

for _, row in hours_df.iterrows():
if row["Date"] != "":
block_df = pd.DataFrame(temp, columns=hours_columns)

if temp:
cell_a1 = block_df.iloc[0,0]

filtered_df = material_df.loc[
(material_df["Material Date"] < cell_a1) &
(material_df["Material Date"] >= last_date)]

last_date = cell_a1

combined_block = pd.concat([block_df, filtered_df], axis=1)

combined_df = pd.concat([combined_df, combined_block], ignore_index=True)

temp = []

temp.append(row)

if temp:
block_df = pd.DataFrame(temp, columns=hours_columns)
combined_df = pd.concat([combined_df, block_df], ignore_index=True)

print(combined_df)
Я не получаю никаких ошибок. Просто сложенный вывод, как тот, который я показал выше.


Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-maxdf1
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»