【发布时间】:2016-07-19 11:19:54
【问题描述】:
我目前正在格式化来自两个不同数据集的数据。 其中一个数据集反映了每小时观察房间内的人数,第二个数据集是基于 5 分钟间隔生成的 wifi 日志的人数。
将这两个数据帧合并为一个后,我遇到了这样一个问题,即每个小时(如“10:00:00”)都有原始数据集的数据,但其他数据(每 5 分钟一次,如“10:47: 14") 不包括此数据。
以下是合并数据框的外观:
room time con auth capacity % Count module size
0 B002 Mon Nov 02 10:32:06 23 23 90 NaN NaN NaN NaN`
1 B002 Mon Nov 02 10:37:10 25 25 90 NaN NaN NaN NaN`
12527 B002 Mon Nov 02 10:00:00 NaN NaN 90 50% 45.0 COMP30520 60`
12528 B002 Mon Nov 02 11:00:00 NaN NaN 90 0% 0.0 COMP30520 60`
有没有办法让我浏览数据框并从 11:00:00 找到有关“占用”、“占用计数”、“模块”和“大小”的所有信息并将其写入所有单元格是同一天,并且时间在 10:00:00 和 10:59:59 之间?
这将允许我获得每一行的所有信息,然后允许我根据“天”和“小时”收集 min()、max() 和 median()。
要回答原始数据框的评论,这里有:
第一个数据框:
time room module size
0 Mon Nov 02 09:00:00 B002 COMP30190 29
1 Mon Nov 02 10:00:00 B002 COMP40660 53
第二个数据帧:
room time con auth capacity % Count
0 B002 Mon Nov 02 20:32:06 0 0 NaN NaN NaN
1 B002 Mon Nov 02 20:37:10 0 0 NaN NaN NaN
2 B002 Mon Nov 02 20:42:12 0 0 NaN NaN NaN
12797 B008 Wed Nov 11 13:00:00 NaN NaN 40 25 10.0
12798 B008 Wed Nov 11 14:00:00 NaN NaN 40 50 20.0
12799 B008 Wed Nov 11 15:00:00 NaN NaN 40 25 10.0
这就是这两个数据框合并在一起的方式:
DFinal = pd.merge(DF, d3, left_on=["room", "time"], right_on=["room", "time"], how="outer", left_index=False, right_index=False)
对此的任何帮助将不胜感激。
非常感谢,
-罗曼
【问题讨论】:
-
您希望输出的前两行是:
0 B002 Mon Nov 02 10:32:06 23 23 90 90 0% COMP30520 60、1 B002 Mon Nov 02 10:37:10 25 25 90 0% COMP30520 60? “时间”列的格式是什么? (使用df.time查看) -
你能提供你到目前为止所做的事情吗?您是如何执行合并的?您希望以更清晰的方式获得什么预期结果?
-
嗨@sirfz,这是我合并两个数据帧的方法: DFinal = pd.merge(DF, d3, left_on=["room", "time"], right_on=["room", "time"], how="outer", left_index=False, right_index=False)
-
@RomainD:请通过编辑您的问题将此代码 sn-p 添加到您的问题中。
-
嗨@danielhadar,我想将所有记录保留在最终数据框中,以便生成包含基于日期和小时的 min()、max() 和 median() 值的数据库表. 'time' 列也是一个对象并遵循这种格式( %a %b %d $H:%M:%S )
标签: python python-3.x pandas dataframe