【问题标题】:How to create a pandas dataframe with days and hours in a year in Python? [closed]如何在 Python 中创建具有一年中天数和小时数的 pandas 数据框? [关闭]
【发布时间】:2021-04-19 15:51:10
【问题描述】:

我想创建一个包含一年中所有时间的 pandas 数据框。因此,8760 小时(365 天 * 每天 24 小时)中的每一小时都需要有行。这相对简单。

但是,我还希望在数据框中有另一列对应于小时的天数。这意味着,直到 24 小时,它都是第 1 天。从 25 小时到 28 小时,它应该是第 2 天(天数列中的 2)。这应该重复到 365 天 8760 小时。

需要为此应用什么样的循环技术,我想创建由两列组成的熊猫数据框,分别代表一年中的小时和天数,如下所示:

. . .

【问题讨论】:

  • 您尝试了哪些方法,结果如何?请提供minimal reproducible example
  • 谢谢。我想我得到了答案。当hour-1除以24时,我需要取商+1。

标签: python python-3.x pandas loops for-loop


【解决方案1】:

也许您可以使用 np.arange 创建小时数,然后将它们除以 24 得到天数?

类似这样的:

import pandas as pd
import numpy as np

hours = np.arange(1, 8761)
df= pd.DataFrame(data=hours, columns = ["Hours of a Year"])
df['Days of a Year'] = ((df["Hours of a Year"]-1)//24)+1
print(df)

【讨论】:

  • 这是一个好方法,但您需要考虑到 24 小时的倍数,它们将被视为第二天(即 24 小时:(24//24)+1 = 第 2 天,虽然它应该仍然是第 1 天
  • 我想我得到了答案。应该是:((df["一年中的小时数"]-1)//24)+1。
  • 是的,应该是对的!我将编辑我的答案。
【解决方案2】:

填充“日”列的一种方法是在填充小时列时将除法小时数/每天 24 小时设置为上限:

import math    
day = math.ceil(hour / 24)

或者不导入数学模块,使用整数除法:

day = -(-hour//24)

【讨论】:

    【解决方案3】:

    例如

    df = pd.DataFrame(range(1, 24*365 + 1), columns=['hour'])
    df['day'] = (df['hour'] - 1) // 24 + 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 2019-12-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      相关资源
      最近更新 更多