일부는 아래에 중복 수 있습니다 (이 기사는 같은 점수를 받아야 반 시간에 발표) 반 시간해야하지만 작동하는 것 같다 :
df['score'] = df['publicationDate'] - df['publicationDate'].max()
df['score'] = (df['score']/np.timedelta64(1, 'm')).apply(lambda x: (round(x/30) * 30 + 30)/30 if x else x).rank(method='max')
그래서 당신이 분 timedelta로 변환 30으로 반올림하고 마지막으로 그 값의 순위를 매기십시오.
이
df['score'] = ((df['publicationDate'] - df['publicationDate'].max())/np.timedelta64(1, 'm')).apply(lambda x: (round(x/30) * 30 + 30)/30 if x else x).rank(method='max')
Explaination : 당신이하십시오 또한 한 - 라이너 될 수있다 - 가장 최근
(df['score']/np.timedelta64(1, 'm'))
에서 모든 날짜 빼기 -
(df['publicationDate'] - df['publicationDate'].max()
분으로 변환 timedelta를
.apply(lambda x: (round(x/30) * 30 + 30)/30 if x else x)
- 가장 최근의 타임 스탬프를 제외한 30 분의 정리 작업
.rank(method='max')
는 동일한 순위를 가진 모든 사람들에게 높은 값을주는 결과를 순위 화합니다.
편집 :
이
df['diff'] = (df['publicationDate'] - df['publicationDate'].max()).apply(lambda x: x.days)
df.loc[df['diff']<=-2, 'score'] = 0
가
첫 번째 줄이 전체 일 timedelta 당신을 줄 것이며, 두 번째가 순위를 변경합니다 :
은 당신이 사용할 수있는 그 나이가 2 일 이내의 순위를 변경하려면 0
일이 -2
보다 작거나 같습니다.
고마워.하지만 당신은 무엇을'(df [ 'score']/np.timedelta64 (1, 'm'))'하고 있는지 말할 수 있습니까? –
물론, 시간대를 분 단위로 변환합니다. – zipa
지난 2 일 사이에 게시 된 기사와 나머지 기사의 순위를 0으로하고 싶다면 해결 방법이 될 수 있습니까? –