Python:计算一周中的哪一天



我需要帮助,我有一个csv文件,包含以下列:

Date    Tipology    inputDates  dayOfWeek
0   2018-01-01  200 2018-01-01  Monday
1   2018-01-02  93  2018-01-02  Tuesday
2   2018-01-03  382 2018-01-03  Wednesday
3   2018-01-04  147 2018-01-04  Thursday
4   2018-01-05  107 2018-01-05  Friday
... ... ... ... ...
360 2018-12-27  155 2018-12-27  Thursday
361 2018-12-28  148 2018-12-28  Friday
362 2018-12-29  129 2018-12-29  Saturday
363 2018-12-30  129 2018-12-30  Sunday
364 2018-12-31  147 2018-12-31  Monday

我想在一周中的每一天总结一下我正在做的:

groupweek = df1.groupby(['dayOfWeek','Tipology']).count()
groupweek

我收到

Date   inputDates
dayOfWeek   Tipology        
Friday           107    1   1
113    1   1
117    1   1
118    1   1
119    1   1
.........................
Monday           104    1   1
111    1   1
113    1   1
118    1   1
..........................
etc. etc

理论上,我认为把星期五到星期一等的所有类型加起来,我得到了多少类型(一周中每天发生的数字和(,但这并没有发生,所以我不确定通过下面的操作我是否得到了我想要的:?

in:
groupweek = df1.groupby(['dayOfWeek'],as_index=False)['Tipology'].sum()
groupweek
out:
dayOfWeek   Tipology
0   Friday      8356
1   Monday      9245
2   Saturday    8685
3   Sunday      8489
4   Thursday    8629
5   Tuesday     8959
6   Wednesday   9273

数字提示值是否根据2018年的工作日进行分组和汇总?

使用count(((应该有所有52个星期五、52个星期一等(添加它们不会得到sum((的结果。

您的第一个实现:

groupweek = df1.groupby(['dayOfWeek','Tipology']).count()

等效sql:

select count(Date), count(inputDates) from df1 group by dayOfWeek, Tipology

您在groupBy中使用了两列:"dayOfWeek"one_answers"Tipology"这为("dayOfWeek","Tipology"(组合创建了唯一的行。

相反,你只想在一周中的某一天拥有独特性。因此,从逐列中删除列"Tipology"就可以了。这将给你所有的52秒和53秒。

groupweek = df1.groupby(['dayOfWeek'])['Tipology'].count()

等效sql:

select count(Tipology) from df1 group by dayOfWeek

您的第二个实现是正确的。Tipology按daysOfWeek分组,然后按sum函数聚合。

groupweek = df1.groupby(['dayOfWeek'],as_index=False)['Tipology'].sum()

等效sql:

select sum(Tipology) from df1 group by dayOfWeek

最新更新