我的最后一个问题没有找到任何帮助/答案,我找到了另一种方法,我想知道是否有可能迭代设置为索引的列(DateTime为pandas格式:
,以便在迭代期间我可以指定从00:03:00到23:59:00的范围是一天 (做某事),依此类推。我在处理熊猫上的日期对象时遇到问题。 谢谢您的帮助。
答案 0 :(得分:1)
您可以像这样在day
的{{1}}上进行循环。
datetime
这将为您提供以下结果:
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')
有帮助吗?