python - 为数据框中的每个 ID 创建一个日期时间

标签 python pandas dataframe

我有一个从 2016/1/1 00:00 到 2018/11/25 23:00 的数据框 (named df),每小时都有一个时间戳,object_id 和一个值。数据集仅包含 object_id 具有值的行。

timestampHour     object_id  value
2016/1/1 00:00    1          2
2016/1/1 00:00    3          1
2016/1/1 01:00    1          1
2016/1/1 01:00    2          3
2016/1/1 02:00    2          3
2016/1/1 02:00    3          2

我想获得一个显示每小时所有对象 ID 的数据框,如果没有值,则为空值。

timestampHour     object_id  value
2016/1/1 00:00    1          2
2016/1/1 00:00    2          null
2016/1/1 00:00    3          1
2016/1/1 01:00    1          1
2016/1/1 01:00    2          3
2016/1/1 01:00    3          null
2016/1/1 02:00    1          null
2016/1/1 02:00    2          3
2016/1/1 02:00    3          2

我已经根据时间戳创建了日期时间。并使用以下代码将它们四舍五入到小时:

df["timestamp"] = pd.to_datetime(df["result_timestamp"])
df['timestampHour'] = df['result_timestamp'].dt.round('60min')

(我不知道是否有更好的选择,但我一直在尝试创建 timestampHour 行直到 12(我有 12 个每个唯一的 object_id)并用(那个小时的)未使用的 object_id 填充那些新创建的行。但是我无法根据条件创建空行)

我对编程还很陌生,我没有找到通过搜索其他帖子来更接近解决这个问题的线索。

最佳答案

使用pivot_tableunstack:

df.pivot_table(
    index='object_id',  columns='timestampHour', values='value'
).unstack().rename('value').reset_index()

    timestampHour  object_id  value
0  2016/1/1 00:00          1    2.0
1  2016/1/1 00:00          2    NaN
2  2016/1/1 00:00          3    1.0
3  2016/1/1 01:00          1    1.0
4  2016/1/1 01:00          2    3.0
5  2016/1/1 01:00          3    NaN
6  2016/1/1 02:00          1    NaN
7  2016/1/1 02:00          2    3.0
8  2016/1/1 02:00          3    2.0

要了解其工作原理,中间的 pivot_table 有助于查看:

timestampHour  2016/1/1 00:00  2016/1/1 01:00  2016/1/1 02:00
object_id
1                         2.0             1.0             NaN
2                         NaN             3.0             3.0
3                         1.0             NaN             2.0

找不到 object_idtimestampHour 组合的值时,NaN 被添加到 table 。当您使用 unstack 时,这些 NaN 将被保留,从而为您提供包含缺失值的所需结果。

关于python - 为数据框中的每个 ID 创建一个日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53636745/

相关文章:

python - 根据条件突出显示 panda df 错误

python - 消除 pd.read_csv 中的空格

r - 如何根据另一个数据框中的值定义数据框中的计算?

python - 如何在不使用其他功能的情况下进行 GroupBy?

python - Python中zfill方法的解释

python - 如何在 Pyramid 项目中添加自定义包?

python - 如何检查某个数字是否在 Pytorch 张量中?

python - 如何检查元组中是否包含某个单词,如果包含,则将其删除

python - 取消嵌套 Numpy 数组

r - 如何将数据帧转换为时间序列?