Как заполнить «отсутствующий временной шаблон» и «заполнить их» определенным значением с помощью Python? - PullRequest
0 голосов
/ 15 февраля 2019

Я бы хотел «расширить» мою строку с:

+-------------+---------+-------+-------+
| Week Number | Weekday | Time  | Speed |
+-------------+---------+-------+-------+
|           1 | Monday  | 09.00 |     2 |
|           1 | Monday  | 12.00 |     2 |
|           1 | Monday  | 14.00 |     2 |
|           1 | Monday  | 15.00 |     1 |
|           1 | Tuesday | 08.00 |     4 |
|           1 | Tuesday | 10.00 |     2 |
|           1 | Tuesday | 11.00 |     3 |
|           1 | Tuesday | 13.00 |     2 |
+-------------+---------+-------+-------+

на следующий шаблон для каждого дня: 08.00, 09.00, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00

+-------------+---------+-------+-------+
| Week Number | Weekday | Time  | Speed |
+-------------+---------+-------+-------+
|           1 | Monday  | 08.00 |     0 |
|           1 | Monday  | 09.00 |     2 |
|           1 | Monday  | 10.00 |     0 |
|           1 | Monday  | 11.00 |     0 |
|           1 | Monday  | 12.00 |     2 |
|           1 | Monday  | 13.00 |     0 |
|           1 | Monday  | 14.00 |     2 |
|           1 | Monday  | 15.00 |     1 |
|           1 | Tuesday | 08.00 |     4 |
|           1 | Tuesday | 09.00 |     0 |
|           1 | Tuesday | 10.00 |     2 |
|           1 | Tuesday | 11.00 |     3 |
|           1 | Tuesday | 12.00 |     0 |
|           1 | Tuesday | 13.00 |     3 |
|           1 | Tuesday | 14.00 |     0 |
|           1 | Tuesday | 15.00 |     0 |
+-------------+---------+-------+-------+

и заполните пропущенное 0. Как я могу это сделать?

Я использую Python 3.6 с библиотекой панд.

1 Ответ

0 голосов
/ 16 февраля 2019
import pandas as pd
df = pd.DataFrame({'Week Number': 1, 'Weekday': ['Monday'] * 4 + ['Tuesday'] * 4, 'Time':['09.00', '12.00', '14.00', '15.00'] * 2,
                  'Speed': [2, 4] * 4})

Предполагая, что times, days и week_nums - все значения, на которые можно расширить DataFrame

times = ['08.00', '09.00', '10.00', '11.00', '12.00', '13.00', '14.00', '15.00']
days = ['Monday', 'Tuesday']
week_nums = [1]

Создать DataFrame из всех возможных комбинаций с помощью Speed = 0

from itertools import product
df_combinations = pd.DataFrame(list(product(, days, times, [0])), columns=['Week Number', 'Weekday', 'Time', 'Speed'])

Объединить оба кадра данных (df_combinations должен быть вторым для удаления дубликатов!)

df_new = pd.concat([df, df_combinations], ignore_index=True, sort=False)

Создать двоичную маску дубликатов, удалить их и отсортировать кадр данных

df_new = df_new[~df_new.duplicated(subset=['Week Number', 'Weekday', 'Time'], keep='first')]
df_new.sort_values(['Week Number', 'Weekday', 'Time'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...