[英]iterate over index and define each range as a day
我的最后一個問題沒有找到任何幫助/答案,我找到了另一種方法,我想知道是否可以遍歷設置為索引的列(使用 pandas 格式的日期時間:
,以便在迭代期間我可以指定從 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.