참고 : Series에 dt 접근자가 있으므로 이제 날짜/시간은 여전히 datetime64 여야하지만 인덱스가 중요하지 않습니다.
업데이트 : 당신은 (람다없이) 더 직접 GROUPBY을 수행 할 수 있습니다
In [21]: df.groupby([df["Date/Time"].dt.year, df["Date/Time"].dt.hour]).mean()
Out[21]:
Value
Date/Time Date/Time
2010 0 60
1 50
2 52
3 49
In [22]: res = df.groupby([df["Date/Time"].dt.year, df["Date/Time"].dt.hour]).mean()
In [23]: res.index.names = ["year", "hour"]
In [24]: res
Out[24]:
Value
year hour
2010 0 60
1 50
2 52
3 49
을 당신이 할 수있는 datetime64 인덱스의 경우
In [31]: df1.groupby([df1.index.year, df1.index.hour]).mean()
Out[31]:
Value
2010 0 60
1 50
2 52
3 49
올드 대답 (느려질 것입니다) :
As 당신이 다음 튜플에서 MultiIndex을 만들 수있는 유용한 인덱스의
In [11]: year_hour_means = df1.groupby(lambda x: (x.year, x.hour)).mean()
In [12]: year_hour_means
Out[12]:
Value
(2010, 0) 60
(2010, 1) 50
(2010, 2) 52
(2010, 3) 49
: suming 날짜/시간은 당신이 groupby의 매핑 기능을 사용할 수 있습니다 * 인덱스했다
In [13]: year_hour_means.index = pd.MultiIndex.from_tuples(year_hour_means.index,
names=['year', 'hour'])
In [14]: year_hour_means
Out[14]:
Value
year hour
2010 0 60
1 50
2 52
3 49
* 경우 아니, 먼저 set_index
를 사용하여 날짜/시간 열이 날짜 형식 (자동 분석 옵션에 대한 dateutil.parser 참조)에 있다면
df1 = df.set_index('Date/Time')
고마워요. 나는 루프로 시도했지만 이것은 훨씬 더 좋은 방법이다. –
추 신 : "df1.groupby (lambda x : (x.year, x.hour))."의 "x.year"또는 "x.hour"를 어떻게 채울 수 있습니까? mean() "동적 매개 변수로 lamda 함수에? 이 "df1.groupby (lambda x : (변수 1, 변수 2)). 평균() "에 대한 Varialbe1 = x.year 및 Variable2 = x.hour 정의가 작동하지 않는 것 같습니다. –
@ MarkusW 새로운 질문으로 질문해야합니다.) ... 람다가 아닌 적절한 기능을 사용하려는 것처럼 들립니다. –