Как реализовать календарь кадра данных pandas с различными входными данными для каждой ячейки

Итак, у меня есть проблема, которую мне удалось найти, но она не кажется правильной и неэффективной. Есть список активов assets = ['1', '2', '3', ..., 'n'], и для каждого актива у меня есть уникальный ввод для каждой даты в диапазоне дат как date_range = ['2023-01-01', '2023-01-02', ..., '202x-xx-xx'].

Чтобы построить календарь, который я реализовал как:

#list of assets
assets = ['A1','A2','A3','A4']

#Dataframe with data that will be used to build the calendar and be the reference for inputs
data = {'PRODUCT': ['A1', 'B1', 'C1', 'D1'], 'DATE': [2023-01-02, 2023-07-15, 2023-12-21]}   
df_data = pd.DataFrame(data)
  
#Building the columns of the calendar
today = pd.Timestamp(2023, 1, 1)
today_str = str(today)

columns = list()
columns.append('ASSETS')

date_max = df_data['DATE'].max()
delta = (data_max - today).days

for i in range(0, delta+1):
    columns.append(str((today+timedelta(days=i)).date()))

#Building the calendar and using the assets as index
df_calendar = pd.DataFrame(columns = columns)
df_calendar['ASSETS'] = assets
df_calendar.index = list(df_calendar['ASSETS'])
df_calendar= df_calendar.drop('ASSETS', axis=1)
df_calendar= df_calendar.fillna(0)

Окончательный результат:

индекс 2023-01-01 2023-01-02 .......... 2023-12-21 А1 0 0 . 0 А2 0 0 . 0 А3 0 0 . 0 А4 0 0 . 0

Любая помощь или идеи приветствуются, спасибо всем!

Я начал экспериментировать с pd.date_range и попробую другое решение.

Я нашел однажды этот пост, может быть, вы можете использовать его: Github

Hermann12 18.01.2023 15:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

IIUC, вы можете использовать:

import pandas as pd

assets = [f'A{i}' for i in range(1, 10)]
date_range = pd.date_range('2023-01-14', '2023-01-19', freq='D')
df = pd.DataFrame(0, index=assets, columns=date_range)

Выход:

>>> df
    2023-01-14  2023-01-15  2023-01-16  2023-01-17  2023-01-18  2023-01-19
A1           0           0           0           0           0           0
A2           0           0           0           0           0           0
A3           0           0           0           0           0           0
A4           0           0           0           0           0           0
A5           0           0           0           0           0           0
A6           0           0           0           0           0           0
A7           0           0           0           0           0           0
A8           0           0           0           0           0           0
A9           0           0           0           0           0           0

Другие вопросы по теме