如何解决如何使用python在准确的时间获取具有占用计数的数据集,并返回每小时最大值的数据集?
我想采用一个数据集,该数据提供每15分钟在一个位置上有多少人的计数(例如,在21:45的位置A处有13个人,在21:30的位置A处有29个人,等等。 ),而是让数据集显示任何小时(例如,在21:00和21:59之间)占据该位置的最大人数,位置A的最大入住人数为33-如果最大数量为33个人在21:00、21:15、21:30或21:45发生了事情。
我的起点是一个看起来像这样的csv(它具有成千上万的条目,但这仅是示例):
+--------------------+-------+-------+-------+-------+-------+-------+
| TIME | LOC A | LOC B | LOC C | LOC D | LOC E | LOC F |
+--------------------+-------+-------+-------+-------+-------+-------+
| | | | | | | |
| 8/28/2020 22:00:22 | 5 | 0 | 0 | 0 | 10 | 0 |
| | | | | | | |
| 8/28/2020 21:45:21 | 13 | 10 | 23 | 14 | 24 | 0 |
| | | | | | | |
| 8/28/2020 21:30:22 | 29 | 13 | 31 | 26 | 35 | 7 |
| | | | | | | |
| 8/28/2020 21:15:22 | 32 | 17 | 41 | 32 | 49 | 12 |
| | | | | | | |
| 8/28/2020 21:00:22 | 33 | 24 | 50 | 43 | 64 | 15 |
| | | | | | | |
| 8/28/2020 20:45:23 | 44 | 31 | 60 | 47 | 88 | 15 |
| | | | | | | |
| 8/28/2020 20:30:22 | 48 | 36 | 70 | 48 | 120 | 25 |
| | | | | | | |
| 8/28/2020 20:15:23 | 48 | 42 | 82 | 57 | 124 | 26 |
+--------------------+-------+-------+-------+-------+-------+-------+
并且要确认的是,列中的值是在那个确切时间该位置出现的人数。
我的目标是这样的:
+--------------------+-------+-------+-------+-------+-------+-------+
| TIME | LOC A | LOC B | LOC C | LOC D | LOC E | LOC F |
+--------------------+-------+-------+-------+-------+-------+-------+
| | | | | | | |
| 2020-08-28 22:00 | 5 | 0 | 0 | 0 | 10 | 0 |
| | | | | | | |
| 2020-08-28 21:00 | 33 | 24 | 50 | 43 | 64 | 15 |
| | | | | | | |
| 2020-08-28 20:00 | 48 | 42 | 82 | 57 | 124 | 26 |
+--------------------+-------+-------+-------+-------+-------+-------+
例如,如果某个位置在14:00、14:15、14:30和14:45的计数分别为5,7,12,6,则该位置的新条目将显示14:00和值12(因为那是那个时期的人数上限)。
我希望我已经解释过了。我对python还是很陌生,我完全有信心可以做到这一点,我只是不知道怎么做。
任何帮助将不胜感激-在此先感谢ʕ•ᴥ•ʔ
解决方法
您可以在索引上使用groupby来达到目的:
import pandas as pd
df = pd.DataFrame([{'Time':'2020-01-01 21:15:00','LOCA':3,'LOCB':0},{'Time':'2020-01-01 21:00:00','LOCA':4,'LOCB':10},{'Time':'2020-01-01 20:00:00','LOCB':1},{'Time':'2020-01-01 20:03:00','LOCA':12,{'Time':'2020-01-05 21:15:00','LOCB':0}])
#df.set_index(df['Time'],inplace = True)
df.set_index('Time',inplace = True) #That is the proper way to do it
df.index = pd.to_datetime(df.index)
#df.drop(['Time'],axis = 1,inplace = True)
df = df.groupby([df.index.date,df.index.hour]).max()
print(df)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。