質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1337閲覧

他のcsvファイルの値の範囲内となっているかどうかでダミー変数を与えたい

bon...

総合スコア2

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/07 07:10

編集2020/12/10 11:50

前提・実現したいこと

データフレーム"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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/12/07 07:29

エラーメッセージは一部を切り取るのではなく全てを掲載してください。
bon...

2020/12/07 07:52

失礼いたしました。エラーメッセージを編集しました。
meg_

2020/12/07 10:23

コード中の”qpr1”は何でしょうか?(コードを見るとpandas.DataFrameっぽいですが) また、コードを検証できるようにサンプルのcsvデータも提示されると回答しやすくなります。
bon...

2020/12/07 14:25

qpr1は   性別 年齢 日時 ・・・ 1 1 24 2020/4/18 2 0 39 2020/5/7 3 0 28 2020/4/24 ・・・ のようになっているファイルです。
meg_

2020/12/09 07:34

> 別のcsvファイル"期間"の値の範囲内となる値をとるものにダミー変数1を与えたいです。 ファイルには複数の開始日1と終了日2のデータが存在しますが(複数行あるという意味)、qpr1データフレームとの対応はどうしたいのでしょうか?
bon...

2020/12/09 13:43

"期間"内のコード1の日時で、"qpr1"内のすべてのデータへ対応させたいです。 こののちにコード2の日時で"qpr1"内のすべてのデータ、コード3で"qpr1"のすべてのデータ…とループさせたいと考えていました。
meg_

2020/12/09 14:04

> "期間"内のコード1の日時で、"qpr1"内のすべてのデータへ対応させたいです。 すみませんが、ロジックが理解出来ませんでした。
bon...

2020/12/09 15:57

"期間"の1行目の開始日1と終了日2のみを使用したいです。 "qpr1"の日時が、"期間"の1行目の開始日と終了日の間に含まれているかどうかを"qpr1"全ての行でチェックしダミー変数を与えたいです。 上手く説明できずに申し訳ありません。
meg_

2020/12/09 16:28 編集

kyuko["1",["開始日1"]]はkyuko.loc["1","開始日1"]またはkyuko.loc[1,"開始日1"]でしょうか? locの計算式は「条件1<= 条件2<= 条件3」は不可なので、「(条件1<= 条件2) & (条件2<= 条件3)」みたいな書き方にしてください。
bon...

2020/12/10 11:51

ありがとうございます。書き方を変え、新しくやってみましたが別のエラーが発生してしまいました。試したことに追記いたしましたので見ていただけると幸いです。
meg_

2020/12/10 11:58

qpr1の後の「.loc」が抜けてませんか?
bon...

2020/12/10 12:06

抜けていました! 直したところ無事に動かすことができました。拙い説明で初歩的なミスばかりしていましたが、詳しく教えてくださり大変ありがとうございました。非常に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問