Я пытаюсь объединить два кадра данных (т. е. df1 и df2), где они имеют разное количество столбцы (
Код: Выделить всё
df1=3
Моя цель — объединить два кадра данных различной длины в один 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