1
のdiff
列には、範囲がリセットされるたびに1ずつ増加するグループ列を作成します。 diff
が負の場合、範囲がリセットされます。Python:整数値の範囲に基づいてPandasデータフレームにグループ列を作成する
import pandas as pd
df = pd.DataFrame({'year': [2016, 2016, 2016, 2016, 2016, 2016, 2016],
'month' : [1, 1, 2, 3, 3, 3, 3],
'day': [23, 25, 1, 1, 7, 20, 30]})
df = pd.to_datetime(df)
df = pd.concat([df, pd.Series(data=[15, 35, 80, 5, 20, 45, 90])], axis=1)
df.columns = ['date', 'percentworn']
col_shift = ['percentworn']
df_shift = df.shift(1).loc[:, col_shift]
df_combined = df.join(df_shift, how='inner', rsuffix='_2')
df_combined.fillna(value=0,inplace=True)
df_combined['diff'] = df_combined['percentworn'] - df_combined['percentworn_2']
grp
列は0, 0, 0, 1, 1, 1, 1
を持っている必要があります。私が試したコードは
def grping(df):
df_ = df.copy(deep=True)
i = 0
if df_['diff'] >= 0:
df_['grp'] = i
else:
i += 1
df_['grp'] = i
return df_
df_combined.apply(grping,axis=1)
です。インクリメント後には、私はi += 1
が必要です。どうすればこれを達成できますか?または、より良い方法で望ましい結果を得ることができますか?
ありがとう、それは私が探していたものです。 – dustin
5分を待たなければならなかった – dustin