2 回答

TA貢獻1848條經驗 獲得超6個贊
為此,您可以使用以下代碼:
聲明部門列表并獲取范圍內的日期列表(最小和最大)
departments = ['Sales', 'Specialist', 'Purchase', 'HR']
dates = pd.date_range(start=df.InvoiceDate.min(), end=df.InvoiceDate.max(), freq='1D').tolist()
你想要一個笛卡爾積,所以使用下面的函數
def cartesian_product(data):
? ? index = pd.MultiIndex.from_product(data.values(), names=data.keys())
? ? return pd.DataFrame(index=index).reset_index()
cartesian_product({'departments': departments,
? ? ? ? ? ? ? ? ? ?'date': a})

TA貢獻1111條經驗 獲得超0個贊
您以錯誤的方式調用 pd.DataFrame() 。此外,作為數據提供的 2 個數組的大小也不同。要解決您可以執行以下操作:
departments = ['Sales', 'Specialist', 'Purchase', 'HR']
sizeDates = len(dates)
sizeDep = len(departments)
departments = departments * sizeDates
dates = dates * sizeDep
dates = pd.date_range(start=df.InvoiceDate.min(), end=df.InvoiceDate.max(), freq='1D').tolist()
departments = departments * len(dates)
data = {'departments': departments,'date': dates}
df2 = pd.DataFrame(data)
添加回答
舉報