簡體   English   中英

迭代索引並將每個范圍定義為一天

[英]iterate over index and define each range as a day

我的最后一個問題沒有找到任何幫助/答案,我找到了另一種方法,我想知道是否可以遍歷設置為索引的列(使用 pandas 格式的日期時間:

  • 2019-05-02 00:03:00
  • 2019-05-02 00:08:00
  • 2019-05-02 00:13:00
  • 2019-05-02 00:18:00
  • 2019-05-02 00:23:00
  • 2019-05-02 00:28:00
  • 2019-05-02 00:33:00
  • ...
  • )

,以便在迭代期間我可以指定從 00:03:00 到 23:59:00 的范圍是一天(做某事)等等。 我在處理 pandas 上的日期對象時遇到問題。 謝謝你的幫助。

您可以像這樣在datetime時間的day進行循環。

import pandas as pd
from datetime import datetime, timedelta

df = pd.DataFrame(columns=['SomeDatetime'], index=[0,1,2,3,4,5])
now = datetime.now()
df.loc[0, 'SomeDatetime'] = now + timedelta(minutes = 10)
df.loc[1, 'SomeDatetime'] = now - timedelta(days = 1)
df.loc[2, 'SomeDatetime'] = now + timedelta(minutes = 15)
df.loc[3, 'SomeDatetime'] = now + timedelta(minutes = 20)
df.loc[4, 'SomeDatetime'] = now + timedelta(minutes = 50)
df.loc[5, 'SomeDatetime'] = now + timedelta(minutes = 90)

print("Dataframe\n")
print(df)
print("\nDay Loop\n")
for day in df['SomeDatetime'].dt.day.unique():
    day_value = df[df['SomeDatetime'].dt.day == day]
    print(day_value)

這將為您提供以下結果:

Dataframe

                 SomeDatetime
0  2019-11-15 09:02:47.784752
1  2019-11-14 08:52:47.784752
2  2019-11-15 09:07:47.784752
3  2019-11-15 09:12:47.784752
4  2019-11-15 09:42:47.784752
5  2019-11-15 10:22:47.784752

Day Loop

                 SomeDatetime
0  2019-11-15 09:02:47.784752
2  2019-11-15 09:07:47.784752
3  2019-11-15 09:12:47.784752
4  2019-11-15 09:42:47.784752
5  2019-11-15 10:22:47.784752
                 SomeDatetime
1  2019-11-14 08:52:47.784752

您可以在week執行此操作,也可以在其他時間執行此操作。
評論后編輯

import numpy as np
import pandas as pd
from datetime import datetime, timedelta

df = pd.DataFrame(columns=['SomeDatetime', 'x', 'y'], index=[0,1,2,3,4,5])
now = datetime.now()
df.loc[0, 'SomeDatetime'] = now + timedelta(minutes = 10)
df.loc[1, 'SomeDatetime'] = now - timedelta(days = 1)
df.loc[2, 'SomeDatetime'] = now + timedelta(minutes = 15)
df.loc[3, 'SomeDatetime'] = now + timedelta(minutes = 20)
df.loc[4, 'SomeDatetime'] = now + timedelta(minutes = 50)
df.loc[5, 'SomeDatetime'] = now - timedelta(days = 30*4)  - timedelta(days = 3)

df['x'] = pd.Series(np.random.randn(6))
df['y'] = pd.Series(np.random.randn(6))

df.set_index('SomeDatetime', inplace=True)

print("Dataframe\n")
print(df)
print("\nDay Loop\n")

for date in df.index.to_series().dt.date.unique():
    print(date)
    day_value = df[df.index.to_series().dt.date == date]
    print(day_value)
    print('\n')

結果:

Dataframe

                                   x         y
SomeDatetime                                  
2019-11-15 13:38:13.885939 -1.106788  1.496731
2019-11-14 13:28:13.885939 -0.478087 -0.819366
2019-11-15 13:43:13.885939  1.985328  0.841495
2019-11-15 13:48:13.885939  0.915070 -0.065473
2019-11-15 14:18:13.885939 -0.726703  0.404896
2019-07-15 13:28:13.885939  0.669062 -0.543737

Day Loop

2019-11-15
                                   x         y
SomeDatetime                                  
2019-11-15 13:38:13.885939 -1.106788  1.496731
2019-11-15 13:43:13.885939  1.985328  0.841495
2019-11-15 13:48:13.885939  0.915070 -0.065473
2019-11-15 14:18:13.885939 -0.726703  0.404896


2019-11-14
                                   x         y
SomeDatetime                                  
2019-11-14 13:28:13.885939 -0.478087 -0.819366


2019-07-15
                                   x         y
SomeDatetime                                  
2019-07-15 13:28:13.885939  0.669062 -0.543737


這有幫助嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM