ChatGPTがすぐ理解できる質問の作り方2025年04月13日 16:50

 ChatGPTに質問してもすぐに応答が返ってこない場合と応答する場合がある。

 下記(1)、(2)は待っていても応答がなかったが、同一内容の(3)はすぐに応答した。何がいけなかったのか。
(1)、(2)は恐らく、文章が長すぎて日本語の文法解析が難しかったのだろう。条件と要求を分けて書くことがコツのようだ。


(1)Q:
ではPandaであるFORTRANプログラムによる大きなDataframe型の出力を処理したいのですが、コードが古く、一定行おきに数行のコメント行および変数説明行が入ります。これを削除してDataframe部分のみを抽出するプログラムが作れますか。

ChatGPT:
(応答なし)

(2)Q:
PandaであるFORTRANプログラムによる大きなDataframe型の出力を処理したいのですが、コードが古く、一定行おきに数行のコメント行および変数説明行が入ります。これを削除してDataframe部分のみを抽出するプログラムが作れますか。

ChatGPT:
(応答なし)

(3)Q:
Pandaを使い、FORTRANプログラムで出力された大きなDataframe型の出力を処理したいのです。コードが古く、一定行おきに数行のコメント行および変数説明行が入ります。これを削除してDataframe部分のみを抽出するPythonプログラムが作れますか。

ChatGPT:

はい、もちろんできます!
Pandasを使って、FORTRAN由来の出力ファイルからコメント行や変数説明行を取り除き、データ部分だけを抽出してDataFrameに変換するPythonプログラムを作ることが可能です。
✅ 事前に確認したいこと(もし分かれば)

コメント行の形式(例:!やCで始まるなど?)

変数説明行の例(カラム名が書かれているのか、そうでないのか)

データ行の特徴(数字が並んでいる?固定長?区切り文字はスペース?)

コメント行の出現ルール(例えば「10行ごとに2行コメントが入る」など)

🧪 例:こんな感じのファイルを想定

! This is a header or comment
C Another comment
# Variable: A, B, C
1.0 2.0 3.0
4.0 5.0 6.0
! Comment again
# Explanation: units = kg
7.0 8.0 9.0

🛠️ サンプルコード(行フィルタでDataFrameを作成)

import pandas as pd

# 読み込むファイル名(例)
filename = 'fortran_output.txt'

# 読み込み時に行ごとにフィルタ
data_lines = []
with open(filename, 'r') as f:
for line in f:
# コメント・変数説明行の条件(必要に応じて調整)
if line.strip().startswith(('!', 'C', '#')):
continue # スキップ
if not line.strip():
continue # 空行もスキップ
data_lines.append(line.strip())

# 文字列からDataFrameへ変換
from io import StringIO

# 区切りが空白の場合(必要に応じてdelimiter=';'など変更可)
data_str = "\n".join(data_lines)
df = pd.read_csv(StringIO(data_str), delim_whitespace=True, header=None)

print(df.head())

🔄 出力(上記例なら)

0 1 2
0 1.0 2.0 3.0
1 4.0 5.0 6.0
2 7.0 8.0 9.0

🧠 ヒント:条件を柔軟にするには

if line.startswith(tuple(...)) に、'---' や 'VARIABLES' など、FORTRAN出力特有の文言を追加できます。

N行ごとにコメントが入るようなパターンであれば、行番号ベースのスキップ処理も可能です(enumerate(f)を使う)。

🎯 カスタム対応できます

もし実際のファイルのサンプル(数十行)をご提供いただければ、それに合わせて正確なフィルタ処理を作ることもできます!

必要であれば、正規表現を使ったフィルタ、固定長フィールドへの対応、カラム名の手動設定などもできますので、お気軽にどうぞ!