Создание идентификатора в DataFrame для диапазона дат

1

Я хочу создать фрейм данных с каждым из указанных ниже id чтобы быть в столбце каждой date в df1.

id = ['A', 'B', 'C']
df1 = pd.DataFrame()
df1['date'] = pd.date_range(start= '2000-1-1', end = '2010-12-31', freq = 'B')

Я хотел бы, чтобы данные выглядели следующим образом:

           date     id
0    2000-01-03      A
1    2000-01-03      B
2    2000-01-03      C
3    2000-01-04      A
4    2000-01-04      B
5    2000-01-04      C
6    2000-01-05      A
7    2000-01-05      B 
8    2000-01-05      C

Любая помощь была бы потрясающей!

  • 0
    Примечание: не используйте встроенные функции (например, id ) в качестве имени переменной.
Теги:
pandas
date

1 ответ

1
Лучший ответ

Вы можете объединить данные, построенные из каждого значения в вашем списке ввода:

L = ['A', 'B', 'C']
dates = pd.date_range(start='2000-1-1', end='2010-12-31', freq='B')

df = pd.concat((pd.DataFrame({'date': dates}).assign(id=i) for i in L), ignore_index=True)
df = df.iloc[np.lexsort((df.index, df['date']))].reset_index(drop=True)

print(df)

           date id
0    2000-01-03  A
1    2000-01-03  B
2    2000-01-03  C
3    2000-01-04  A
4    2000-01-04  B
5    2000-01-04  C
...         ... ..

8604 2010-12-30  A
8605 2010-12-30  B
8606 2010-12-30  C
8607 2010-12-31  A
8608 2010-12-31  B
8609 2010-12-31  C
  • 0
    Большое спасибо!! Другой вопрос, как бы я мог объединить вышеупомянутый DataFrame с другим DataFrame. Например, df1 L = ['A', 'B', 'C'] dates1 = pd.date_range(start='1995-1-1', end='2000-12-31', freq='B') df1 = pd.concat((pd.DataFrame({'date': dates1}).assign(id=i) for i in L), ignore_index=True Я только что использовал тот же пример, который вы df1 = pd.concat((pd.DataFrame({'date': dates1}).assign(id=i) for i in L), ignore_index=True выше, но изменил диапазон дат.
  • 0
    @ oceanbeach96, не уверен, это был бы другой вопрос .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню