この質問には2つの部分があります:日付に基づくパンダデータフレームの列方向操作(ソート問題)
1)これを行うより良い方法はありますか?
2)#1にNOの場合、どのように日付の問題を修正できますか?
GROUP DATE VALUE DELTA
A 12/20/2015 2.5 ??
A 11/30/2015 25
A 1/31/2016 8.3
B etc etc
B etc etc
C etc etc
C etc etc
- を次のように私はこの表現であるデータフレームを有する
、各グループのために100行(一意の日付を表す各列)に近いがあります。
GROUPの各文字について、連続する日付の間の値の変化を検出したいと思います。したがって、たとえばGROUP Aの場合、2015年11月30日と2015年12月20日の間に変更が必要です(これは-22.5です)。現在、私は次のことを行っています:
df['DATE'] = pd.to_datetime(df['DATE'],infer_datetime_format=True)
df.sort_values('DATE',ascending=True)
df_out = []
for GROUP in df.GROUP.unique():
x = df[df.GROUP == GROUP]
x['VALUESHIFT'] = x['VALUE'].shift(+1)
x['DELTA'] = x['VALUE'].sub(x['VALUESHIFT'])
df_out.append(x)
df_out = pd.concat(df_out)
私が挑戦しているのは、日付が正しくソートされていないということです。だからシフトが起こって、デルタを計算すると、それは実際に連続する日付間のデルタではありません。
これは適切な処理方法ですか?どうすれば私の日付の問題を解決できますか?自分の質問に答える
Applying datetime format in pandas for sorting
how to make a pandas dataframe column into a datetime object showing just the date to correctly sort
doing calculations in pandas dataframe based on trailing row
Pandas - Split dataframe into multiple dataframes based on dates?
追加するべきこと - 私はデータフレームにインデックスを設定していません。私は、データフレームを作成するときに設定されている既定の数値0,1,2,3,4、インデックスを持っています。 – Doug