0
私は、最も古いものから日付順にテーブルをソートする必要があります。合計フィールドは、name
フィールドとkind
フィールドをグループ化し、合計を適用することによって作成されます。今度は、各行について、同じname-kind
グルーピングで残りの時間を計算する必要があります。パンダ:グルーピングの残り時間を計算する
csvファイルは、以下のようになります。
date name kind duration total remaining
1-1-2017 a 1 10 100 ? should be 90
2-1-2017 b 1 5 35 ? should be 30
3-1-2017 a 2 3 50 ? should be 47
4-1-2017 b 2 1 25 ? should be 24
5-1-2017 a 1 8 100 ? should be 82
6-1-2017 b 1 2 35 ? should be 33
7-1-2017 a 2 3 50 ? should be 44
8-1-2017 b 2 6 25 ? should be 18
...
私の質問はname
とkind
によってグループ化されたDataFrame
を持ちながら、私は残りの値を計算行う方法ですか?
私の最初のアプローチは、列をシフトし、そのように期間からお互いに値を追加することでした:
df['temp'] = df.groupby(['name', 'kind'])['duration'].apply(lambda x: x.shift() + x)
、その後:
df['duration'] = df.apply(lambda x: x['total'] - x['temp'], axis=1)
しかし、期待通りに動作しませんでした。
これを行うにはクリーンな方法がありますか、何とかしてiloc, ix, loc
を使用していますか?
ありがとうございました。
df["cumsum"] = df.groupby(['name', 'kind'])["duration"].cumsum()
df["remaining"] = df["total"] - df["cumsum"]
は多分インデックスをリセットして注意しながら:
これは完璧に働いた、ありがとう! –