前提・実現したいこと
データフレーム"qpr1"の中で、別のcsvファイル"期間"の値の範囲内となる値をとるものにダミー変数1を与えたいです。
"期間"は
コード 開始日1 開始日2 終了日1 終了日2
1 2020/4/1 2020/5/1 2020/4/30 2020/5/30
2 2020/4/2 2020/5/3 2020/4/16 2020/5/14
3 2020/3/15 2020/4/8 2020/5/2 2020/5/8
"qpr1"は
性別 年齢 日時 ・・・
1 1 24 2020/4/18
2 0 39 2020/5/7
3 0 28 2020/4/24
・・・
のようになっています。
"期間"ファイルの'コード'1の行の'開始日1'と'終了日2'の期間内に、"qpr1"の'日時'が含まれていれば変数1を与えたいです。
"qpr1"の1,2,3...とすべてのデータに対して"期間"の'コード'1を対応させたいです。
発生している問題・エラーメッセージ
python
1TypeError Traceback (most recent call last) 2<ipython-input-20-c5c479f15b53> in <module> 3 1 kyuko = pd.read_csv("期間.csv",encoding="cp932") 4----> 2 qpr1.loc[kyuko["1",["開始日1"]] <= qpr1["日時"] <= kyuko["1",["終了日2"]], "日時ダミー"] = 1 5 6~\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key) 7 2798 if self.columns.nlevels > 1: 8 2799 return self._getitem_multilevel(key) 9-> 2800 indexer = self.columns.get_loc(key) 10 2801 if is_integer(indexer): 11 2802 indexer = [indexer] 12 13~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance) 14 2644 ) 15 2645 try: 16-> 2646 return self._engine.get_loc(key) 17 2647 except KeyError: 18 2648 return self._engine.get_loc(self._maybe_cast_indexer(key)) 19 20pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc() 21 22pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc() 23 24TypeError: '('1', ['開始日1'])' is an invalid key 25 26
該当のソースコード
python
1 2kyuko = pd.read_csv("期間.csv",encoding="cp932") 3qpr1.loc[kyuko["1",["開始日1"]] <= qpr1["日時"] <= kyuko["1",["終了日2"]], "日時ダミー"] = 1
試したこと
追加で試してみましたがまたエラーが発生してしまいました。
python
1コード 2kyuko = pd.read_csv("期間.csv",encoding = "cp932") 3qpr1 = pd.read_csv("qpr1.csv") 4 5kyuko["開始日1"] = pd.to_datetime(kyuko["開始日1"]) 6kyuko["終了日2"] = pd.to_datetime(kyuko["終了日2"]) 7qpr1["日時"] = pd.to_datetime(qpr1["日時"]) 8 9qpr1[(qpr1["日時"] >= kyuko.loc[1,"開始日1"]) & (qpr1["日時"] <= kyuko.loc[1,"終了日2"]), "日時ダミー"] = 1 10
python
1 2エラーコード 3TypeError Traceback (most recent call last) 4<ipython-input-51-e0a8aafa4b96> in <module> 5 6 qpr["日時"] = pd.to_datetime(qpr1["日時"]) 6 7 7----> 8 qpr1[(qpr1["日時"] >= kyuko.loc[1,"開始日1"]) & (qpr1["日時"] <= kyuko.loc[1,"終了日2"]), "日時ダミー"] = 1 8 9~\Anaconda3\lib\site-packages\pandas\core\frame.py in __setitem__(self, key, value) 10 2936 else: 11 2937 # set column 12-> 2938 self._set_item(key, value) 13 2939 14 2940 def _setitem_slice(self, key, value): 15 16~\Anaconda3\lib\site-packages\pandas\core\frame.py in _set_item(self, key, value) 17 2998 18 2999 self._ensure_valid_index(value) 19-> 3000 value = self._sanitize_column(key, value) 20 3001 NDFrame._set_item(self, key, value) 21 3002 22 23~\Anaconda3\lib\site-packages\pandas\core\frame.py in _sanitize_column(self, key, value, broadcast) 24 3664 25 3665 # broadcast across multiple columns if necessary 26-> 3666 if broadcast and key in self.columns and value.ndim == 1: 27 3667 if not self.columns.is_unique or isinstance(self.columns, ABCMultiIndex): 28 3668 existing_piece = self[key] 29 30~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in __contains__(self, key) 31 3898 @Appender(_index_shared_docs["contains"] % _index_doc_kwargs) 32 3899 def __contains__(self, key) -> bool: 33-> 3900 hash(key) 34 3901 try: 35 3902 return key in self._engine 36 37~\Anaconda3\lib\site-packages\pandas\core\generic.py in __hash__(self) 38 1796 39 1797 def __hash__(self): 40-> 1798 raise TypeError( 41 1799 f"{repr(type(self).__name__)} objects are mutable, " 42 1800 f"thus they cannot be hashed" 43 44TypeError: 'Series' objects are mutable, thus they cannot be hashed 45 46 47 48 49 50 51 52
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー