를 사용하여 날짜 인덱스 dataframe 리샘플링 할
를 사용하여 dataframe를 다시 샘플링 내가이 dataframe을 말해봐 :
value
00:00, 01/05/2017 2
12:00, 01/05/2017 4
00:00, 02/05/2017 6
12:00, 02/05/2017 8
00:00, 03/05/2017 10
12:00, 03/05/2017 12
와 나는 (이 단순 여기를 원본과 동일하지만 필요는 없습니다) 12 시간 '단위'로
18:00 02/05/2017
에 06:00, 01/05/2017
에서 이동을 리샘플링합니다. 내가 원하는 결과는 다음과 같습니다 값들이 중복 값의 평균이다
value
06:00, 01/05/2017 3
18:00, 01/05/2017 5
06:00, 02/05/2017 7
18:00, 02/05/2017 9
하는 것으로 (예를 들어, 3 = 평균 (2,4))
이 작업을 수행하는 방법을 내가 확실 해요.
내 첫 번째 시도했다 : 이것은 적절하게 데이터 프레임을 손질하고 올바른 단위를 보장하지만 결과는 그래서 시작 날짜와 결과를 정렬하지 않습니다
def resample(df: DataFrame, start: datetime, end: datetime, granularity: timedelta) -> DataFrame:
result = df.resample(granularity).mean()
result = result[result.index <= end]
result = result[result.index >= start]
return result
:
value
12:00, 01/05/2017 4
00:00, 02/05/2017 6
12:00, 02/05/2017 8
두 번째 시도에서 base
매개 변수를 사용하여 데이터를 이동 시켰습니다.
def resample(df: DataFrame, start: datetime, end: datetime, desired_granularity: timedelta) -> DataFrame:
data_before_start = df[df.index <= start]
# Get the last index value before our start date
last_date_before_start = data_before_start.last_valid_index()
current_granularity_secs = seconds_between_measurements(df)
rule = str(int(desired_granularity.total_seconds())) + 'S'
base = current_granularity_secs - (start - last_date_before_start).total_seconds()
result = df.resample(rule, base=base).mean()
result = result[result.index < end]
result = result[result.index >= start]
return result
이 나에게 제공합니다
value
06:00, 01/05/2017 4
18:00, 01/05/2017 6
06:00, 02/05/2017 8
18:00, 02/05/2017 10
이 오른쪽 인덱스를 가지고 있지만 값이 전후에 측정에서 다음 측정에서의 백업 광고보다는 평균된다.
내가 원하는 것을 얻을 수있는 방법에 대한 아이디어가있는 사람이 있습니까? 사전에
도와 주셔서 감사합니다 그냥 제가 탈락 한 경우 모든 중요한 세부 사항 :) 알려
편집 : 평균을 얻는 것은 경우이 매우 까다로운, 내가 할 수있는 만드는 비트 pad()와 비슷한 주어진 시간 전에 값을 사용하여 해결한다. 내 현재의 '최고의'솔루션을 통해 백필()과 같은 값을 얻을 수 있습니다.