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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

354閲覧

for文の使い方について

K.takita

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/12/11 06:04

前提・実現したいこと

以下のプログラム内のデータを比較する方法を知りたいです。
比較したい内容は以下の通りです。
(比較内容)
Day1kiboutimeの各メンバーの各時間ごとに対し、shiftの時間(列)の内容をすべて比較し、Day1kiboutimeの要素が0かつshiftの要素が1のときFalse、その他の場合はTrueを返すものを作成したいです。
(Day1kiboutime(0,0)に対し、shift(0,0),(1,0),(2,0),(3,0),(4,0),(5,0)を比較し、Day1kiboutime(0,0)=0であるので、shift(a,b)=1のところはFalse,その他をTrueと返すということをしたいです。これをDay1kiboutimeの要素全てに対して行えるようにしたいです。)

該当のソースコード

python

1import pandas as pd 2 3#アルバイトの集合 4n_member = 5 5member = pd.Series(f"member{m+1}" for m in range(n_member)) 6 7#時刻の集合 8n_time = 9 9time = pd.Series(f"{t+12}時" for t in range(n_time)) 10#t時 : t時~t+1時 11 12#シフト番号 13n_shiftnumber = 6 14shiftnumber = pd.Series(f"shift{sn+1}" for sn in range(n_shiftnumber)) 15 16#シフトの一覧 17shift = pd.DataFrame([[0, 0, 0, 0, 0, 0, 0, 0, 0], 18 [1, 1, 1, 1, 1, 1, 1, 1, 1], 19 [1, 1, 1, 0, 0, 0, 0, 0, 0], 20 [0, 0, 0, 1, 1, 1, 0, 0, 0], 21 [0, 0, 0, 0, 0, 0, 1, 1, 1], 22 [1, 1, 1, 0, 0, 0, 1, 1, 1]], index=shiftnumber, columns=time) 23 24#希望出勤時間(Day1) 25Day1kiboutime = pd.DataFrame([[0, 0, 0, 1, 1, 1, 0, 0, 0], 26 [0, 0, 0, 1, 1, 1, 0, 0, 0], 27 [1, 1, 1, 0, 0, 0, 1, 1, 1], 28 [1, 1, 1, 0, 0, 0, 1, 1, 1], 29 [0, 0, 0, 0, 0, 0, 0, 0, 0]], index=member, columns=time) 30

試したこと

以下の内容を試してみました。
エラー自体は発生しなかったのですが、内容を確認したのですが、True,False以外に0という表記が出てきてしまいました。

python

1for m in range(member.size): 2 for t in range(time.size): 3 for s in range(n_shiftnumber): 4 if Day1kiboutime.iloc[m,t] == 0 and shift.iloc[s,t] == 1: 5 False 6 else: 7 True

一方的な質問になってしまい申し訳ありません。
ご教授していただけると幸いです。よろしくお願いします。

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

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

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

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

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

gasbombe

2020/12/11 14:48

「返す」という言葉の意味を整理してください。 通常の関数で有れば、処理を終えた結果として値を返しますが、処理の部分部分に対して「返す」ことはしません。~のところは~を返す、というのをinputとoutputで考えなおすことをお勧めします。
K.takita

2020/12/14 05:09

返信遅くなり申し訳ありません。 今一度考えてみます。
guest

回答1

0

返すってことは関数でしょうか?

「試したこと」のプログラムだと、ただTrueかFalseだけを実行することになり、特に何も起きません。
0という表記が出てきたのは、True = 1, False = 0なので、Falseを実行したからですね。(多分)

True,Falseを何に使うのかは知りませんが、for文ですべて入手したいのであれば、

Python

1result = [] 2for m in range(member.size): 3 for t in range(time.size): 4 for s in range(n_shiftnumber): 5 if Day1kiboutime.iloc[m,t] == 0 and shift.iloc[s,t] == 1: 6 result.append(False) 7 else: 8 result.append(True)

このようにリストにまとめるとかしたらいいんじゃないですかね。
あとは、

Python

1for m in range(member.size): 2 for t in range(time.size): 3 for s in range(n_shiftnumber): 4 if Day1kiboutime.iloc[m,t] == 0 and shift.iloc[s,t] == 1: 5 処理1 6 else: 7 処理2

みたいにやりたい処理をそこに直接書いてしまうとか。

投稿2021/01/16 10:43

sakuramochi_py

総合スコア32

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問