今日もなめこの巣をchatGPTの続きです。

前回、いきなり答えを求めるのには失敗しましたので…まずはサンプルとして以下のようなプロンプトを実行させてみました。

# 命令

以下の入力データから、次の制約条件を満たす結果を、処理言語はpythonで出力してください。

# 制約条件

- 出力は名前だけを表形式で表示
- 3人ずつ抽出
- しぶとさが1人は30以上
- すばやさが1人は30以上

# 入力データ

名前,しぶとさ,かしこさ,すばやさ,スキル,種類限定の冒険先
傘ナシなめこ,40,15,20,ステルス,
白なめこ,40,20,15,鈍感,財宝の洞窟
なめこ,30,26,26,"石頭,幸運",財宝の洞窟
ねこなめこ,25,15,40,"俊足,夜目",
なめこモドキ,20,15,15,,
白ウサギなめこ,20,15,35,"俊足,かわいい",
オニなめこ,10,15,30,ツノ,


さて結果は…

以下はPythonでの解法例になります。入力データをCSV形式で保存して、pandasライブラリを使用して処理しています。

import pandas as pd

# CSVファイルを読み込み
df = pd.read_csv('input.csv')

# しぶとさが30以上の人とすばやさが30以上の人をそれぞれ取得
tough = df[df['しぶとさ'] >= 30]
quick = df[df['すばやさ'] >= 30]

# 3人ずつに分割して出力
for i in range(0, len(tough), 3):
print(tough.iloc[i:i+3]['名前'].tolist())

for i in range(0, len(quick), 3):
print(quick.iloc[i:i+3]['名前'].tolist())

出力結果:

['傘ナシなめこ', '白なめこ', 'なめこ']
['ねこなめこ', 'なめこモドキ', '白ウサギなめこ']
['傘ナシなめこ', 'ねこなめこ', 'オニなめこ']


このプログラムは、CSVファイルを読み込み、df変数にpandasのDataFrameオブジェクトとして保存します。次に、条件に合致する人物を取得するために、dfを2つのDataFrameオブジェクトでフィルタリングします。最後に、ilocを使ってDataFrameのスライスを行い、名前だけをリスト形式で表示します。iloc[i:i+3]は、DataFrameのi行目からi+3行目までの範囲を取得するために使用されています。


んー、惜しいというか最初から指定した前提条件とは違ってますね…このあたり難しそうです。ということで次回までに命令を工夫してみたいと思いまする。