0
私は、私のようなデータセットを持って、ここでは非常に興味深い問題を抱えている充填データフレームの列が
id, start, end
1234 200 400
1235 300 500
1236 100 900
1236 200 1200
1236 300 1400
主な目的:私は、それぞれの同時セッション数をカウントしますid。
at 100, id:1236 has 1 session running
at 200, id:1236 has 2 sessions
at 300, id:1236 has 3 sessions
...
at 1000m id:1236 has 2 sessions
etc
私のソリューション:
- 1とのセッションの開始値とセッションの終了値の間で列を埋めるすべての行に(セッションの最小値と最大値)1から1400まで
- を列を追加します。
- 上記の結果を得るには、ユーザーのすべての行を追加します。パンダで
:
df = pd.read_csv(data+fileName,sep="\t",usecols=[0,1,2],names=['id','start','end'])
for i in range(0,1440):
df[str(i)]=0
print df.columns
私は列を追加することができ、各行にセッションの開始と終了の間でこれらの列に1を記入する方法をを考えていました。各行は異なるセッションの開始と終了を持つことができます。
多くのヒントがあれば助かります。私はパンダでそれを試していますが、後で私はワーカーノードにパンダがないApache pysparkに移植する必要があります。
パンダでは、 'df [(df.start <= t)&(df.end> = t)]とすることもできます。あなたが希望する時刻を 't 'とすると、groupby(" id ")。count()[' start ']。reset_index()'それに応じて最終列の名前を変更してください。しかし、これをpysparkに移植できるかどうかは分かりません。 – Khris
ありがとう@キリス、確かにいいアプローチ。ここでは、結果を得るために1から1400までループする必要があります。したがって、プロセッサの負荷が高くなり、私のアプローチはメモリを大量に消費します。 – suppoor