データの問題に取り残されています。以下は私のデータである: はまずPython Data Wrangling:DataFrameの値をループし、現在のイテレータが元のイテレータと一致するかどうかを確認します。
Year = ['2010','2011','2012','2013','2014','2015','2010','2011','2014','2015','2016','2010','2011','2012','2015']
Type = ['WAS','WAS','BOS','BOS','WAS','BOS','BOS','BOS','WAS','WAS','BOS','BOS','BOS','BOS','BOS']
ID = ['a','a','a','a','a','a','b','b','b','b','b','c','c','c','c']
df = pd.DataFrame({'ID': ID,'Type': Type,'Year': Year})
df
a WAS 2010
a WAS 2011
a BOS 2012
a BOS 2013
a WAS 2014
and so on...............
私は二つのことを達成しようとしています... - 私はidが同じであることを確認し、決定し、データフレームを通って、行ごとにループにしたい以前入力した場合現在のイテレーター型と一致します。次に、2つの新しいバイナリ変数 'WAStoBOS'と 'BOStoWAS'を作成し、変更がまったくない場合や変数名と同じでない場合は0を返し、変数の方向に変更がある場合は1を返します名。例えば
、出力は次のようになります。
df
ID Type Year WAStoBOS BOStoWAS
a WAS 2010 0 0
a WAS 2011 0 0
a BOS 2012 1 0
a BOS 2013 0 0
a WAS 2014 0 1
a BOS 2015 1 0
第二:同じ構文内 は、IDによって、現在の行の年と前の行の年の差を検索します。
最終結果のデータフレームは、次のようになります。
df
ID Type Year WAStoBOS BOStoWAS YearDiff
a WAS 2010 0 0 0
a WAS 2011 0 0 1
a BOS 2012 1 0 1
a BOS 2013 0 0 1
a WAS 2014 0 1 1
a BOS 2015 1 0 1
b BOS 2010 0 0 0
b BOS 2011 0 0 1
b WAS 2014 0 1 3
b WAS 2015 0 0 1
b BOS 2016 1 0 1
c BOS 2010 0 0 0
c BOS 2011 0 0 1
c BOS 2012 0 0 1
c BOS 2015 0 0 3
任意の助けをいただければ幸いです。
この編集はScottsの提案の後です。
たとえば、コードでIDとタイプが変更されたインスタンスに1が間違って割り当てられます。 IDが変更された場合、以前のタイプが何であっても気にしません... IDとタイプの変更を考慮して少し下のデータフレームを変更して、希望の出力を表示してください...
df
ID Type Year WAStoBOS BOStoWAS YearDiff
a WAS 2010 0 0 0
a WAS 2011 0 0 1
a BOS 2012 1 0 1
a BOS 2013 0 0 1
a WAS 2014 0 1 1
**a BOS 2015** 1 0 1
**b WAS 2010** 0 0 0
b BOS 2011 1 0 1
b WAS 2014 0 1 3
b WAS 2015 0 0 1
**b WAS 2016** 0 0 1
**c BOS 2010** 0 0 0
c BOS 2011 0 0 1
c BOS 2012 0 0 1
c BOS 2015 0 0 3
参照のためにIDとタイプに変更がある場合は、アスタリスクを付けてください。助けてくれてありがとう、私は割り当てを使うことについて決して考えなかった。考慮した 'ID' とのバイナリを割り当てる
私はpd.Seriesように感じます。シフト()はあなたがここで欲しいものになるでしょう... –