前提・実現したいこと
pythonのpandasで、DataFrame内の時系列データの大小を比較して、特定のデータのみ抽出したいと考えています。
欠損値も含まれるDataFrameを使用しているのですが、欠損値と比較される場合を除外する方法を教えていただきたいです。
使用したDataFrameになります。
6行目の[転出日](欠損値)と、7行目の[転入日]が比較されてしまい、思い通りの結果を抽出できません。
欠損値との比較は行わないような操作をかけたい場合、どうすれば解決できるでしょうか?
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
df2 = pd.DataFrame([[1,'1990-04-01', '2009-11-01', '1番地の11'], [1,'1990-04-01', '2009-11-01', '1番地の11'], [1,'1990-04-01', '2009-11-01', '1番地の11'], [1,'1990-04-01','', '1番地の11'], [2,'1990-06-01', '1997-11-01', '1番地の12'], [2,'1990-06-01', '1995-11-01', '1番地の12'], [2,'1990-06-01','', '1番地の12'], [5,'1998-07-01', '', '1番地の12'], [5,'1998-07-01', '', '1番地の12'], [5,'1998-07-01', '', '1番地の12'], [8,'2000-08-01', '', '1番地の18'], [8,'2000-08-01', '', '1番地の18'], [8,'2000-08-01', '', '1番地の18'], [13,'1990-06-01', '1995-11-01', '1番地の22'], [13,'1990-06-01', '1995-11-01', '1番地の22'], [13,'1993-06-01', '1998-11-01', '1番地の22'], [15,'1990-06-01', '2003-11-01', '1番地の22'], [15,'1990-06-01', '2003-11-01', '1番地の22'], [17,'2004-06-01', '', '1番地の22'], [17,'2004-06-01', '', '1番地の22'], [17,'2005-06-01', '2020-11-01', '1番地の22'], [19,'1986-09-01', '1988-10-01', '1番地の25'], [19,'1986-09-01', '1988-10-01', '1番地の25'], [30,'1990-01-01', '1992-11-01', '1番地の25'], [30,'1990-01-01', '1992-11-01', '1番地の25'], [45,'1995-04-01', '1998-03-01', '1番地の25'], [45,'1995-04-01', '1998-03-01', '1番地の25'], [60,'2000-05-01', '', '1番地の25']], columns = ['ID','転入日','転出日','address']) df2
df_next = df2.shift(1) df_select = df2[(df2['address'] == df_next['address']) & (df2['ID'] != df_next['ID']) & (df2['転入日'] > df_next['転出日'])] print(df_select)
試したこと
時系列データを比較するために、** (df2['転入日'] > df_next['転出日'])**
という条件を加えました。
ID 転入日 転出日 address 7 5 1998-07-01 1番地の12 18 17 2004-06-01 1番地の22 23 30 1990-01-01 1992-11-01 1番地の25 25 45 1995-04-01 1998-03-01 1番地の25 27 60 2000-05-01 1番地の25
上記のコードを実行すると、このような結果が得られると思います。
7行目の結果(抽出された一番最初の行)は、欠損値との時系列データの比較となっており、
本来は抽出したくないデータとなっています。
今回のDataFrameでは、抽出された結果の2行目~5行目のみを抽出したいです。
(行番号:18,23,25,27)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/01 08:01