Я пытаюсь:
- Транспонировать список дат в столбцы
- Ввести столбцы для дат, которые явно не указаны в данных (например, в этом случае 07.03.2020 )
Я написал следующий код (формат даты = дд / мм / гггг):
import pandas as pd
from io import StringIO
data = '''\
item|date
ABC1|02/07/2020
ABC1|05/07/2020
ABC1|06/07/2020
DEF2|04/07/2020
DEF2|05/07/2020'''
df = pd.read_csv(StringIO(data), sep='|', parse_dates=['date'])
df = pd.get_dummies(df.set_index(['item'])['date']).groupby(level=[0]).max().reset_index()
print(df)
Мой код возвращает:
+------+------------+------------+------------+------------+
| item | 02/07/2020 | 04/07/2020 | 05/07/2020 | 06/07/2020 |
+------+------------+------------+------------+------------+
| ABC1 | 1 | 0 | 1 | 1 |
| DEF2 | 0 | 1 | 1 | 0 |
+------+------------+------------+------------+------------+
Это отметает первый бит, но у меня очень мало идей о том, как достичь sh второй цели. Я подозреваю, что мне нужно начать с минимальной и максимальной дат из ввода, а затем построить из них список столбцов.
К сожалению, я не знаю, с чего начать.
Желаемые результаты следующим образом (обратите внимание, что есть столбец за 3 июля):
**Matrix 1**
+------+------------+------------+------------+------------+------------+
| item | 02/07/2020 | 03/07/2020 | 04/07/2020 | 05/07/2020 | 06/07/2020 |
+------+------------+------------+------------+------------+------------+
| ABC1 | 1 | | | 1 | 1 |
| DEF2 | | | 1 | 1 | |
+------+------------+------------+------------+------------+------------+
**Matrix 2 (Inverse of matrix 1)**
+------+------------+------------+------------+------------+------------+
| item | 02/07/2020 | 03/07/2020 | 04/07/2020 | 05/07/2020 | 06/07/2020 |
+------+------------+------------+------------+------------+------------+
| ABC1 | | 1 | 1 | | |
| DEF2 | 1 | 1 | | | 1 |
+------+------------+------------+------------+------------+------------+
Я надеюсь, что это возможно и что я предоставил достаточно информации
Спасибо