私は特定のIDの開始日と終了日(df_with_start_end)を持っていると私は別のデータフレーム(df_dates)から同じIDを持つ他の日付の間である理解しようそれら。結果は新しい列に入力する必要があります。のpythonパンダ - 他の日付のために2つの日付の間の期間を分析
アイデアはユニークなIDでデータフレームdf_with_start_endを繰り返し処理していましたが、df_with_start_endの開始日と終了日にdf_datesの他の日付がある場合、解析しようとするすべてのIDについて考えました。
私の実装では、このようなものですが、それはそのように動作しません。
for k in df_with_start_end['ID']:
df_with_start_end[k]['FREE_PERIOD'] = df_with_start_end[k]['START_DATE'] <= df_dates[k]['DATE'] < df_with_start_end[k]['END_DATE']
私はこのエラーを取得する:ここで
Traceback (most recent call last):
File "/opt/anaconda/lib/python3.6/site-packages/pandas/indexes/base.py", line 2134, in get_loc
return self._engine.get_loc(key)
File "pandas/index.pyx", line 132, in pandas.index.IndexEngine.get_loc (pandas/index.c:4433)
File "pandas/index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas/index.c:4279)
File "pandas/src/hashtable_class_helper.pxi", line 732, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13742)
File "pandas/src/hashtable_class_helper.pxi", line 740, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13696)
KeyError: 3685509
は、データフレームの例である:
df_with_start_end
ID START_DATE END_DATE FREE_PERIOD
1 2015-02-13 2016-02-13 False
2 2014-08-27 2015-08-27 True
df_dates
ID DATE
1 2014-04-23
1 2015-08-02
1 2015-09-15
2 2014-06-19
2 2017-01-07
私はループがpythonで遅い聞いたが、私の中でそれらを回避する方法があります場合?あなたが行を反復処理したいが、あなたが実際の列の上にそれを行うよう
IDも列です。 – haapoo
(key、self.obj._get_axis_name(軸)) KeyError: 'ラベル[3609]は[インデックス]にありません 値3609はIDです。それから、IDのインデックスを取得しようとしましたが、すべての時間エラーが発生します。 もう1つのアイデアは、両方のデータフレームをdf_with_start_end.ID = df_dates.IDで結合することです。 – haapoo
@haapoo、 'ID'列があなたのインデックス列でない可能性はありますか? 'df_dates.set_index([ID]、inplace = True)'と 'df_with_start_end'と同じ設定をしてください。 – ehudk