Python 按Datetime分组,并在其他列上提供最频繁的字符串值

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

我目前有一个包含4列的数据集。一个有时间戳,另一个有表示电表状态的字符串,如“PRODUCT”、“PRODUCTOFF”、“HEAT”等

数据当前为10分钟格式。我需要每小时获取此数据,并保留最频繁的值。所以,如果我有“产品,产品,产品,水,热,水”,所有这些10米的时间戳,我希望它显示产品。在3个字符串显示两次或2个字符串显示三次的情况下,它可以选择其中任何一个

我在考虑按频率组织数据并获得最大(1)值,但我无法让它工作

这就是我所拥有的:


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