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)
添加回答
举报