该回答引用自GPT-3.5,由博主GIS_Liu编写:
你可以使用以下方法来解决这个问题:
- 首先,将数据表转换为 pandas DataFrame:
import pandas as pd
data = {'date': ['2022-01-01 00:00:01', '2022-01-01 00:16:00', '2022-01-01 00:32:00', '2022-01-01 00:15:00', '2022-01-01 06:11:00', '2022-01-01 10:15:00', '2022-01-01 12:22:00', '2022-01-01 14:00:00', '2022-01-01 17:34:00'],
'name': ['a', 'a', 'c', 'b', 'c', 'a', 'b', 'c', 'a']}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
- 然后,你可以使用
groupby来按照每十分钟内的时间窗口和操作人员进行分组,并计算操作次数:
result = df.groupby([pd.Grouper(key='date', freq='10T'), 'name']).size().reset_index(name='count')
这将会得到一个新的 DataFrame result,包含每十分钟内,每个操作人员的操作次数。
- 如果你需要从数据表的起始时间开始统计,你可以添加一个新的列来记录时间窗口的起始时间:
result['start_time'] = result['date'].apply(lambda x: x - pd.Timedelta(minutes=x.minute % 10))
这将会为每个时间窗口添加一个起始时间的列。
- 最后,你可以按照你想要的格式重新排列 DataFrame,以达到你想要的效果:
result = result[['start_time', 'name', 'count']]
这样,你就得到了按时间窗口和操作人员进行分组统计的结果。
完整代码如下:
import pandas as pd
data = {'date': ['2022-01-01 00:00:01', '2022-01-01 00:16:00', '2022-01-01 00:32:00', '2022-01-01 00:15:00', '2022-01-01 06:11:00', '2022-01-01 10:15:00', '2022-01-01 12:22:00', '2022-01-01 14:00:00', '2022-01-01 17:34:00'],
'name': ['a', 'a', 'c', 'b', 'c', 'a', 'b', 'c', 'a']}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
result = df.groupby([pd.Grouper(key='date', freq='10T'), 'name']).size().reset_index(name='count')
result['start_time'] = result['date'].apply(lambda x: x - pd.Timedelta(minutes=x.minute % 10))
result = result[['start_time', 'name', 'count']]
这个代码将会生成按时间窗口和操作人员进行分组统计的结果,并满足你的要求。希望对你有所帮助!如果还有其他问题,请随时提问。![img](https://userblink.csdnimg.cn/direct/3281b502cb5447e0aa06db9ebdf7f434.png