df
초기화에서 periods
은 문자열이 아닌 숫자 여야합니다.
나는 이것을 처리하는 방법이 당신이 갖고 싶은 기간에 달려 있다고 생각합니다.
설정 기간 :
from datetime import time
morning_start = time(7)
morning_end = time(12)
evening_start = time(18)
evening_end = time(22)
periods = {'morning':[morning_start, morning_end], 'evening':[evening_start, evening_end]}
접근 1.
def f(x, periods=periods):
for k, v in periods.items():
if x.hour >= v[0].hour and x.hour < v[1].hour:
return k
return 'unknown_period'
접근 2.
for k, v in periods.items():
df['periods'] = np.where(((v[0].hour <= df.t.apply(lambda x: x.hour)) & (df.t.apply(lambda x: x.hour) <= v[1].hour)), k, 'unknown_period')
두 기간으로
가지 방법으로 적어도 몇 있습니다 첫 번째 앱이 정의 됨 oach 빠르게 작동합니다
1000 loops, best of 3: 658 µs per loop
대 2 :
: 당신이합니다 (
periods
을 반복 할 필요없이) 한 줄 표현을 만들 수있는 두 기간을 가진 두 경우 모두
100 loops, best of 3: 3.31 ms per loop
df['periods'] = np.where((morning_start.hour <= df.t.apply(lambda x: x.hour)) & (df.t.apply(lambda x: x.hour) <= morning_end.hour), 'morning', 'evening')
정확히 내가 필요한 것입니다. 자세한 답변을 주셔서 감사합니다. –