1
私は現在、時系列データを扱っており、日の間の値の差を計算したいと考えています。これは、特定のディメンションのすべてのインスタンスに対して個別に発生する必要があります。サンプルデータフレームは次のとおりです。groupby.applyの後のインデックスによるピボット回避方法?
import pandas as pd
df = pd.DataFrame({"date": pd.to_datetime(["2017-01-01", "2017-01-01", "2017-01-02", "2017-01-02", "2017-01-03", "2017-01-03", "2017-01-04", "2017-01-04"]),
"dim_1": [0, 1, 0, 1, 0, 1, 0, 1],
"value": [50, 100, 70, 120, 150, 110, 130, 200]})
毎日、dim_1の組み合わせがあります。今、私は私の期待される結果を得るためにデータフレームを溶融する必要があり
date 2017-01-01 2017-01-02 2017-01-03 2017-01-04
dim_1
0 NaN 20.0 80.0 -20.0
1 NaN 20.0 -10.0 90.0
:に結果の
df.set_index("date").groupby(["dim_1"])\
.apply(lambda x: x["value"] - x["value"].shift())
:今、私は、次の解決策を考え出した
に結果のpd.melt(df.set_index("date").groupby(["dim_1"])\
.apply(lambda x: x["value"] - x["value"].shift()).reset_index(),
["dim_1"])
:
dim_1 date value
0 0 2017-01-01 NaN
1 1 2017-01-01 NaN
2 0 2017-01-02 20.0
3 1 2017-01-02 20.0
4 0 2017-01-03 80.0
5 1 2017-01-03 -10.0
6 0 2017-01-04 -20.0
7 1 2017-01-04 90.0
複数の次元でグループ化すると、この問題は発生しません。
私はこの結果を達成するためのより簡単な方法があると思いますが、私は現在それを見つけることができません。
ありがとうございます!