我有这个数据:
import pandas as pd
data = {
'timestamp': ['2022-11-03 00:00:06', '2022-11-03 00:00:33', '2022-11-03 00:00:35', '2022-11-03 00:00:46', '2022-11-03 00:01:21', '2022-11-03 00:01:30'],
'from': ['A', 'A', 'A', 'A', 'B', 'C'],
'to': ['B', 'B', 'B', 'C', 'C', 'B'],
'type': ['Car', 'Car', 'Van', 'Car', 'HGV', 'Van']
}
df = pd.DataFrame(data)
我希望创建两组CSV:
1.每种车辆类型一个CSV(共8个),其中各行将按时间戳(全天15分钟间隔)和“从”列分组/汇总-此处没有“到”列。
1.每种车辆类型一个CSV(共8个),其中各行将按时间戳(全天15分钟间隔)、“从”列和“到”列分组/汇总。
这两个集合的区别在于,一个集合将对所有FROM项进行计数,另一个集合将对它们进行分组,并按FROM和TO对进行计数。
输出将是15分钟间隔内给定类型车辆的总和,由“起始”列以及“起始”和“终止”列的组合进行汇总。
每种车型的第一个输出如下所示:
第二输出:
我尝试使用Pandas groupby()
和resample()
,但由于我的知识有限,没有成功。我可以在Excel中这样做,但效率很低。我想学习Python更多,更有效,因此我想在Pandas中编码。
我试过df.groupby(['FROM', 'TO']).count()
,但我缺乏知识来使用我所需要的。我总是得到错误时,我做的事情,我不应该或输出不是我所需要的。
我尝试了df.groupby(pd.Grouper(freq='15Min', )).count()
,但似乎我可能有不正确的数据类型。
我不知道这是否适用。
1条答案
按热度按时间5anewei61#
如果我没理解错的话,一种方法可能是:
数据
代码
输出(在Excel中加载)
相关文件:
pd.to_datetime
、df.set_index
、.to_offset
df.groupby
、.resample
df.rename
.dt.strftime
df.to_csv