Python 按Datetime分组,并在其他列上提供最频繁的字符串值
我目前有一个包含4列的数据集。一个有时间戳,另一个有表示电表状态的字符串,如“PRODUCT”、“PRODUCTOFF”、“HEAT”等 数据当前为10分钟格式。我需要每小时获取此数据,并保留最频繁的值。所以,如果我有“产品,产品,产品,水,热,水”,所有这些10米的时间戳,我希望它显示产品。在3个字符串显示两次或2个字符串显示三次的情况下,它可以选择其中任何一个 我在考虑按频率组织数据并获得最大(1)值,但我无法让它工作 这就是我所拥有的:Python 按Datetime分组,并在其他列上提供最频繁的字符串值,python,pandas,datetime,timestamp,pandas-groupby,Python,Pandas,Datetime,Timestamp,Pandas Groupby,我目前有一个包含4列的数据集。一个有时间戳,另一个有表示电表状态的字符串,如“PRODUCT”、“PRODUCTOFF”、“HEAT”等 数据当前为10分钟格式。我需要每小时获取此数据,并保留最频繁的值。所以,如果我有“产品,产品,产品,水,热,水”,所有这些10米的时间戳,我希望它显示产品。在3个字符串显示两次或2个字符串显示三次的情况下,它可以选择其中任何一个 我在考虑按频率组织数据并获得最大(1)值,但我无法让它工作 这就是我所拥有的: TimeStamp M
TimeStamp Meter1 Meter2 Meter3
2019-09-16 12:00:00 OFFWATER PRODUCT OFF
2019-09-16 12:10:00 HEAT PRODUCT OFF
2019-09-16 12:20:00 FANS PRODUCT OFF
2019-09-16 12:30:00 FANS PRODUCT OFF
2019-09-16 12:40:00 FANS PRODUCT OFF
2019-09-16 12:50:00 FANS PRODUCT OFF
2019-09-16 13:00:00 HEAT PRODUCT OFF
2019-09-16 13:10:00 HEAT PRODUCT OFF
2019-09-16 13:20:00 HEAT PRODUCT OFF
2019-09-16 13:30:00 WATER PRODUCT OFF
2019-09-16 13:40:00 WATER PRODUCT OFF
2019-09-16 13:50:00 PRODUCT PRODUCT OFF
这就是我需要的:
TimeStamp Meter1 Meter2 Meter3
2019-09-16 12:00:00 FANS PRODUCT OFF
2019-09-16 13:00:00 HEAT PRODUCT OFF
任何帮助都将不胜感激。我们可以检查
模式
,注意这里我将模式
后的第一个值切片,因为我们可能有两个值是组的模式
df.groupby(df['TimeStamp'].dt.strftime('%Y-%m-%d %H')).apply(lambda x : x.mode().iloc[0])
0 TimeStamp Meter1 Meter2 Meter3
TimeStamp
2019-09-16 12 2019-09-16 12:00:00 FANS PRODUCT OFF
2019-09-16 13 2019-09-16 13:00:00 HEAT PRODUCT OFF
这正是我需要的。就像一个符咒,在一小时内2个标签显示3次的情况下,按字母顺序排列。非常感谢你WeNYoBen