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

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

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

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

Q&A

解決済

1回答

905閲覧

python リストの値ごとの順番の追加

nabeo2

総合スコア1

Python

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

0グッド

0クリップ

投稿2021/12/07 02:56

編集2021/12/07 03:20

前提・実現したいこと

リストの2番目(担当機械)の要素の値ごとに3番目(前段時間)の要素の値が小さい順に並び替え、2番目の要素(担当機械)の値ごとに1,2,・・・と3番目の要素(前段時間)が小さい順に順位を追加したいです。並び替えまでは、できましたが順番の追加が分からないので教えていただきたいです。

該当のソースコード

python

1import numpy as np 2from operator import itemgetter 3JOB = 10 4#担当作業者 5worker = [3,1,3,3,1,2,1,3,2,2] 6#担当機械 7machine = [1,3,2,1,2,1,3,2,2,3] 8#前段時間 9before_time = [5,2,4,7,5,9,10,3,7,8] 10#加工時間 11process_time = [10,10,10,10,10,10,10,10,10,10] 12#後段時間 13after_time = [5,5,5,5,5,5,5,5,5,5] 14job = np.array([worker,machine,before_time,process_time,after_time]).T 15print(job) 16job2 = sorted(job, key=itemgetter(1,2)) 17print(job2) 18 19### 試したこと 20[[ 3 1 5 10 5 ] 21 [ 1 3 2 10 5 ] 22 [ 3 2 4 10 5 ] 23 [ 3 1 7 10 5 ] 24 [ 1 2 5 10 5 ] 25 [ 2 1 9 10 5 ] 26 [ 1 3 10 10 5 ] 27 [ 3 2 3 10 5 ] 28 [ 2 2 7 10 5 ] 29 [ 2 3 8 10 5 ]] 30 312番目(担当機械)の要素の値ごとに3番目(前段時間)の要素の値が小さい順に並び替え後 32[array([ 3, 1, 5, 10, 5]), array([ 3, 1, 7, 10, 5]), array([ 2, 1, 9, 10, 5]), array([ 3, 2, 3, 10, 5]), array([ 3, 2, 4, 10, 5]), array([ 1, 2, 5, 10, 5]), array([ 2, 2, 7, 10, 5]), array([ 1, 3, 2, 10, 5]), array([ 2, 3, 8, 10, 5]), array([ 1, 3, 10, 10, 5])] 33 342担当機械の値ごとに12,・・・と前段時間が小さい順に順位を追加したい 3536 37 38### 前提・実現したいこと 39 40ここに質問の内容を詳しく書いてください。 41(例)PHP(CakePHP)で●●なシステムを作っています。 42■■な機能を実装中に以下のエラーメッセージが発生しました。 43 44### 発生している問題・エラーメッセージ 45

エラーメッセージ

### 該当のソースコード ```ここに言語名を入力 ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

一旦 Pandas のデータフレームに置き換えてみるのはどうでしょうか。

python

1import pandas as pd 2 3job = np.array([worker,machine,before_time,process_time,after_time]).T 4#print(job) 5 6job_df = pd.DataFrame(job, 7 columns=['worker', 'machine', 'before_time', 'process_time', 'after_time']) 8 9job_df = job_df.sort_values(['machine', 'before_time']) 10job_df['rank'] = job_df.groupby('machine')['before_time'].rank().astype(int) 11job = job_df.values 12 13print(job) 14 15# 16[[ 3 1 5 10 5 1] 17 [ 3 1 7 10 5 2] 18 [ 2 1 9 10 5 3] 19 [ 3 2 3 10 5 1] 20 [ 3 2 4 10 5 2] 21 [ 1 2 5 10 5 3] 22 [ 2 2 7 10 5 4] 23 [ 1 3 2 10 5 1] 24 [ 2 3 8 10 5 2] 25 [ 1 3 10 10 5 3]]

投稿2021/12/07 03:28

melian

総合スコア20655

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

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

nabeo2

2021/12/07 03:32

ありがとうございます。 参考にさせていただきます。
Deep_passion

2021/12/07 03:43

melianさん、お世話になっています。唐突に申し訳ありません。どちらで、働いていますでしょうか?melianさんのもとで働きたいです。個人のチャットが存在しなかったので、無礼を承知で申し訳ありません。
melian

2021/12/07 03:53

> taiyo_suzuki さん そう言って貰えるのは嬉しいのですが、働いていないです(苦笑) > nabeo2 さん どうもすみません。
Deep_passion

2021/12/07 04:47 編集

melianさん>ご返信ありがとうございます。 それでは、詳しいことをもさらにお話しさせてもらいたいのですが、slackでチャットは可能でしょうか?メールアドレスを教えてもらえれば幸いでございます。 よろしくおねがいします。 > nabeo2 さん 本当にどうもすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問