Как получить сумму столбцов из CSV в указанных строках, используя даты, введенные в качестве переменных в python? - PullRequest
1 голос
/ 03 апреля 2020
Date,hrs,Count,Status
2018-01-02,4,15,SFZ
2018-01-03,5,16,ACZ
2018-01-04,3,14,SFZ
2018-01-05,5,15,SFZ
2018-01-06,5,18,ACZ

Это часть данных к тому, над чем я работал. Фактические данные в том же формате с около 1000 записей каждой даты в нем. Я принимаю start_date и end_date в качестве входных данных от пользователя:

start_date=dt.date(2018, 1, 2)
end_date=dt.date(2018, 1, 23)

Теперь мне нужно отобразить итоговое значение в часах и количество в выбранном диапазоне дат на выходе. Я могу сделать это, введя даты непосредственно между предложением, используя этот фрагмент:

df = df.loc[df['Date'].between('2018-01-02','2018-01-06'), ['hrs','Count']].sum()
print (df)

Вывод:

hrs      22
Count    78
dtype: int64

Я использую pandas и библиотеку даты и времени. Но я хочу передать их, используя переменные start_date и end_date, так как они могут меняться каждый раз. Я попытался заменить его, он не выдает ошибку, но общее количество показывает 0.

df = df.loc[df['Date'].between('start_date','end_date'), ['hrs','Count']].sum()
print (df)

Вывод:

Duration_hrs    0
Reject_Count    0
dtype: int64

1 Ответ

1 голос
/ 03 апреля 2020

Вам нужно только преобразовать все значения в совместимый тип, pd.Timestamp:

df = df.loc[pd.to_datetime(df['Date']).between(pd.Timestamp(start_date),
                                               pd.Timestamp(end_date)),
            ['hrs','Count']].sum()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...