Rom*_*inD 5 python dataframe python-3.x pandas
我目前正在格式化来自两个不同数据集的数据.其中一个数据集反映了按小时计算人数的观察数,第二个是基于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`
Run Code Online (Sandbox Code Playgroud)
有没有办法让我通过数据框并从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
Run Code Online (Sandbox Code Playgroud)
第二个数据帧:
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
Run Code Online (Sandbox Code Playgroud)
这就是将这两个数据帧合并在一起的方式:
DFinal = pd.merge(DF, d3, left_on=["room", "time"], right_on=["room", "time"], how="outer", left_index=False, right_index=False)
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助将不胜感激.
非常感谢,
-Romain
实际上我可以通过以下方式解决这个问题:
第一:使用“时间”功能分区来生成两个附加列,一个用于“时间”列中显示的日期,一个用于“时间”列中显示的小时。我使用 lambda 函数来获取这些列:
df['date'] = df['date'].map(lambda x: x[10:-6])
df['time'] = df['time'].map(lambda x: x[8:-8])
Run Code Online (Sandbox Code Playgroud)
基于这两列新列,我修改了数据帧的合并方式。
这是我用来修复它的代码:
dataframeFinal = pd.merge(dataframe1, dataframe2, left_on=["room", "date", "hour"],
right_on=["room", "date", "hour"], how="outer",
left_index=False, right_index=False, copy=False)
Run Code Online (Sandbox Code Playgroud)
合并后,我最终得到了重复的时间列(“time_y”和“time_x”)。
因此,我替换了 NaN 值,如下所示:
dataframeFinal.time_y.fillna(dataframeFinal.time_x, inplace=True)
Run Code Online (Sandbox Code Playgroud)
现在“time_y”列包含所有时间值,不再是 NaN。我不需要“time_x”列,因此我将其从数据框中删除
dataframeFinal = dataframeFinal.drop('time_x', axis=1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |