创建一个数据框,其中包含每个 sku 范围内的所有日期

Create a data frame that includes all dates between a range for each sku

我正在尝试为 3 个国家/地区和 9 个 SKU 中的每一个创建一个数据框,其中包含“1/1/2019”和“28/02/2022”之间的所有日期。 我遵循这种方法好几天了:

days = pd.DataFrame(pd.date_range(start='1/1/2019', end='28/02/2022',freq='D'))
for i in range(26):
    days=days.append(pd.DataFrame(pd.date_range(start='1/1/2019', end='28/02/2022',freq='D')))
days.rename(columns={0:'Date'},inplace=True)
days.reset_index(inplace=True,drop=True)

此数据框给出了一个包含 31185 行的列,对应于该范围之间的 1155 天乘以 27 (3x9)。 现在我想分配国家名称和 sku 名称。为了填充我遵循这种手动方法的国家,但加载需要一段时间。有更聪明的方法吗?我想对 9 个 SKU 执行相同的操作。

for i in range(0,10395):
    days.loc[i,'country']= 'Austria'
for i in range(10395,20790):
    days.loc[i,'country']= 'Germany'
for i in range(20790,31185):
    days.loc[i,'country']= 'Switzerland'

提前致谢!

尝试days.loc[range(0,10395),'country']= 'Austria'

更有效的方法是 cross-multiply 将 DateCountrySKU 的 3 个数组放在一起:

df = pd.MultiIndex.from_product([
    pd.date_range(start='1/1/2019', end='28/02/2022', freq='D'),
    ['Austria', 'Germany', 'Switzerland'],
    [f'SKU {i}' for i in range(9)]
], names=['Date', 'Country', 'SKU']).to_frame(index=False)