python - 如何使用 Python pandas 有效地将每小时数据转换为一年中每一天的日期和时间?

标签 python pandas dataframe

我有一个 pandas DataFrame,它代表一天中每小时的一个值,我想报告一年中每天的每个值。我已经写了“天真的”方法来做到这一点。有没有更有效的方法?

天真的方式(工作正常,但需要很多时间):

dfConsoFrigo = pd.read_csv("../assets/datas/refregirateur.csv", sep=';')
dataframe = pd.DataFrame(columns=['Puissance'])
iterator = 0
for day in pd.date_range("01 Jan 2017 00:00", "31 Dec 2017 23:00", freq='1H'):
    iterator = iterator % 24
    dataframe.loc[day] = dfConsoFrigo.iloc[iterator]['Puissance']
    iterator += 1

输入(时间;值)24行:

Heure;Puissance
00:00;48.0
01:00;47.0
02:00;46.0
03:00;46.0
04:00;45.0
05:00;46.0
...
19:00;55.0
20:00;53.0
21:00;51.0
22:00;50.0
23:00;49.0

预期输出(8760 行):

                     Puissance
2017-01-01 00:00:00         48
2017-01-01 01:00:00         47
2017-01-01 02:00:00         46
2017-01-01 03:00:00         46
2017-01-01 04:00:00         45
...
2017-12-31 20:00:00         53
2017-12-31 21:00:00         51
2017-12-31 22:00:00         50
2017-12-31 23:00:00         49

最佳答案

我认为你需要numpy.tile :

np.random.seed(10)
df = pd.DataFrame({'Puissance':np.random.randint(100, size=24)})
rng = pd.date_range("01 Jan 2017 00:00", "31 Dec 2017 23:00", freq='1H')

df = pd.DataFrame({'a':np.tile(df['Puissance'].values, 365)}, index=rng)
<小时/>
print (df.head(30))
                      a
2017-01-01 00:00:00   9
2017-01-01 01:00:00  15
2017-01-01 02:00:00  64
2017-01-01 03:00:00  28
2017-01-01 04:00:00  89
2017-01-01 05:00:00  93
2017-01-01 06:00:00  29
2017-01-01 07:00:00   8
2017-01-01 08:00:00  73
2017-01-01 09:00:00   0
2017-01-01 10:00:00  40
2017-01-01 11:00:00  36
2017-01-01 12:00:00  16
2017-01-01 13:00:00  11
2017-01-01 14:00:00  54
2017-01-01 15:00:00  88
2017-01-01 16:00:00  62
2017-01-01 17:00:00  33
2017-01-01 18:00:00  72
2017-01-01 19:00:00  78
2017-01-01 20:00:00  49
2017-01-01 21:00:00  51
2017-01-01 22:00:00  54
2017-01-01 23:00:00  77
2017-01-02 00:00:00   9
2017-01-02 01:00:00  15
2017-01-02 02:00:00  64
2017-01-02 03:00:00  28
2017-01-02 04:00:00  89
2017-01-02 05:00:00  93

关于python - 如何使用 Python pandas 有效地将每小时数据转换为一年中每一天的日期和时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43761205/

相关文章:

python - 如何使用 pandas 使用列与列列表和值列表之间的匹配来填充数据框?

python - 无法 pip 安装手电筒

python - Get_Pressed 行为异常

python - Google App Engine 中的工作日期时间对象

python - 查询数据框的最快方法

python - 将毫秒级数据读入 pandas

scala - 迭代数据框中的每一行,将其存储在 val 中并作为参数传递给 Spark SQL 查询

python - 如何保持Python服务器连接打开,直到客户端完成它?

python - 按 10 分钟间隔对 pandas DataFrame 进行分组

python - 根据条件更改数据框中的值