【发布时间】:2018-05-03 20:24:43
【问题描述】:
我有一个这样的数据框。我们称之为df1:
zone script datetimecomplete
0 2.0 Consumers 2018-05-03 16:09:48
1 2.0 Inventory 2018-05-03 16:09:48
2 2.0 Orders_Details 2018-05-03 16:09:48
3 3.0 Consumers 2018-05-03 16:09:48
4 3.0 Inventory 2018-05-03 16:09:48
5 3.0 Orders_Details 2018-05-03 16:09:48
6 6.0 Birthday 2018-05-03 16:09:48
我必须基于 df1 创建另一个数据框 (df2)。要求是对于每个 'zone' and 'script' 列,我需要生成过去 24 小时内的脚本计数(只需要比较日期而不是时间戳)。只需要追加 datetimecomplete 列是 Today 减去 1 天的行。
df2 需要有 4 列:
[zone, script, datetimecomplete, totalcount]
zone - 同 df1 脚本 - 与 df1 相同 datetimecomplete - 当前日期减去 1 天需要附加到 df2 totalcount - 需要计算从今天开始的最后 24 小时内的每个单独脚本。
df2 示例:
zone script datetimecomplete totalcount
2.0 Consumers 2018-05-02 16:09:48 2
2.0 Inventory 2018-05-02 16:09:48 1
2.0 Orders_Details 2018-05-02 16:09:48 1
3.0 Consumers 2018-05-02 16:09:48 1
3.0 Inventory 2018-05-02 16:09:48 1
3.0 Orders_Details 2018-05-02 16:09:48 4
6.0 Birthday 2018-05-02 16:09:48 6
我不知道该怎么做。
到目前为止的代码,我得到了计数,但不是从 df1 开始的最后 24 小时,也没有创建 totalcount 列:
df2 = df1.groupby(['zone', 'script', df1['datetimecomplete'] - pd.Timedelta(days=1)])['script'].count()
我正在尝试完成的示例 SQL 查询:
select df1.zone, df1.script, currentdate - 1 as [datetimecomplete], count(df1.zone) as [TotalCount]
from [df1] as a
where df1.datetimecomplete = currentdate - 1
group by df1.zone, df1.script
提前谢谢你。
【问题讨论】:
-
示例中显示的
df1是否足以生成df2?我的意思是,我没有看到birthday脚本的 6 个计数。 -
@HarvIpan 6 不是计数,而是内部代码。我认为制作df2就足够了
-
我实际上指的是
totalcount生日。