У меня есть фрейм данных Pandas, в котором хранятся данные для проверки ноутбуков в моем отделе. В кадре данных есть столбцы для извлеченного времени (имя столбца Out
), проверенное время (In
), имя проверяемого лица (Name
) и количество машин, проверенных этим человеком (Number
). Я хочу создать новый фрейм данных, который отображает как количество проверок, выполненных за данную неделю, так и количество проверенных машин за данную неделю. Исходный фрейм данных называется cb
.
Мне удалось создать сводную таблицу, в которой указано количество машин, проверенных за неделю:
dates = pd.pivot_table(cb, values="Number", index="Out", aggfunc=sum)
Мне интересно, что я могу добавить к этой строке кода, чтобы добавить новый столбец, который вычисляет количество раз, когда машины были извлечены. Например, если два человека проверили ноутбуки за определенную неделю, человек 1 проверил 10 ноутбуков, а человек 2 проверил 5, то должен быть столбец «Число», который на этой неделе читается как «15», а другой столбец «Частота». это читает "2".
Возможно ли это с одной pivot_table
строкой или есть что-то еще? Заранее спасибо.
РЕДАКТИРОВАТЬ: Вот то, что я надеюсь, является небольшим примером того, что я ищу. Во-первых, вот исходные данные из CSV, который я читаю:
Name Number DateOut TimeOut DateIn TimeIn
C 1 8/31/2017 2:00p 9/1/2017 3:40p
Ma 2 8/31/2017 3:30p . .
S 1 9/6/2017 10:50a 9/6/2017 1:55p
S 3 9/7/2017 10:00a 9/7/2017 3:00p
C 1 9/7/2017 2:20p 9/8/2017 11:00a
Ma 2 9/7/2017 4:00p 9/8/2017 10:00a
S 4 9/8/2017 10:50a 9/8/2017 3:15p
W 6 9/11/2017 8:15a 9/11/2017 11:00a
B 4 9/11/2017 10:45a 9/11/2017 1:00p
S 4 9/11/2017 10:55a 9/11/2017 3:55p
S 3 9/12/2017 12:55p 9/12/2017 3:00p
Ma 2 9/12/2017 4:00p 9/15/2017 10:00a
S 1 9/13/2017 11:00a 9/13/2017 1:00p
T 1 9/13/2017 1:00p . .
K 1 9/13/2017 2:00p 9/14/2017 10:00a
F 2 9/13/2017 4:00p 9/14/2017 11:45a
S 3 9/14/2017 1:00p 9/14/2017 3:00p
C 1 9/14/2017 3:50p 9/15/2017 10:00a
F 4 9/15/2017 9:35a 9/15/2017 3:00p
(Имена отредактированы для приватности.)
Код для чтения в нем (парсинг заданных дат в правильный индекс DateTime):
import pandas as pd
cb = pd.read_csv("chromebookdata.csv", na_values=".",
parse_dates={"In": [2,3], "Out":[4,5]})
cb['In'] = pd.to_datetime(cb['In'], errors="coerce")
cb['Out'] = pd.to_datetime(cb['Out'], errors="coerce")
Создание сводной таблицы, в которой указано количество машин в неделю:
dates = pd.pivot_table(cb, values="Number", index="Out", aggfunc=sum)
dates_weekly = dates.resample("W").sum()
В этой сводной таблице указано количество проверенных машин за неделю:
Number
In
2017-09-03 3.0
2017-09-10 11.0
2017-09-17 33.0
Мне нужен новый столбец для числа раз проверок, поэтому для этих данных это будет выглядеть так:
Number Count
In
2017-09-03 3.0 2
2017-09-10 11.0 5
2017-09-17 33.0 12