(半分の時間に発表された2件の記事が同じスコアを取得する必要があります)半分の時間でなければなりませんが、それは動作するようです:
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')
、について説明: - 1
(df['score']/np.timedelta64(1, 'm'))
最新のすべての日付を引く - 分
.apply(lambda x: (round(x/30) * 30 + 30)/30 if x else x)
にはtimedeltaを変換
(df['publicationDate'] - df['publicationDate'].max()
あなたしてください場合 また、ワンライナーすることができ - 最新のタイムスタンプを除いて30分に回す
.rank(method='max')
は、同じランクを持つすべての値に上限値を与える結果をランク付けします。
EDIT:最初の行は、全体の日にあなたはtimedeltaを与える、2つ目はにランクを変更します
df['diff'] = (df['publicationDate'] - df['publicationDate'].max()).apply(lambda x: x.days)
df.loc[df['diff']<=-2, 'score'] = 0
:
あなたがこれを使用することができたものより古い2日のランクを変更するには0
ここで、日数は-2
以下です。
ありがとうございます。しかし、あなたは何を言っていますか?(df ['score']/np.timedelta64(1、 'm')) ' –
確かに、タイムディスタを分に変換します。 – zipa
最後の2日間に公開された記事と残りの記事のランクを0にする場合、回避策は何ですか? –