私は、情報フィールドからシーケンス番号のみを持つ別の列にシーケンス番号を抽出しようとしているCSVファイルとしてipパケットを持っています。シーケンス番号は、情報文字列の途中の部分文字列です。だから私の生のコードです。まず、シーケンス番号の新しい列を作成し、その後、InfoフィールドにSeq番号が含まれているかどうかを確認してから、情報フィールドを分割してシーケンス番号を取得します。 'Seq = j.split ...'の後に印刷すると、正しい値が得られます。それをCSVファイルのSeq列に書き込むにはどうすればよいですか?Python/Pandasの別の列にデータをコピーする
file = pd.read_csv(file.csv)
file['Seq'] = None
for i in file['Info']:
if 'Seq' in i:
split = i.split(' ')
for j in split:
if 'Seq=' in j:
Seq = j.split('Seq=',1)[1]
file.loc[i,'Seq'] = int(Seq)
例CSV:
No. Time Source Destination Protocol Length Info
1 0.000000 sourceip 192.168.0.1 TCP 54 35165 > 80 [SYN] Seq=0 Win=16384 Len=0
2 0.000001 sourceip 192.168.0.1 TCP 54 14378 > 80 [SYN] Seq=0 Win=16384 Len=0
3 0.000003 sourceip 192.168.0.1 TCP 54 31944 > 80 [SYN] Seq=0 Win=16384 Len=0
望ましい結果:
No. Time Source Destination Protocol Length Info Seq
1 0.000000 sourceip 192.168.0.1 TCP 54 35165 > 80 [SYN] Seq=0 Win=16384 Len=0 0
2 0.000001 sourceip 192.168.0.1 TCP 54 14378 > 80 [SYN] Seq=0 Win=16384 Len=0 0
3 0.000003 sourceip 192.168.0.1 TCP 54 31944 > 80 [SYN] Seq=0 Win=16384 Len=0 0
チラッから、それは大丈夫そうです。あなたは 'file.to_csv'を試しましたか?例外はありましたか? – tmrlvi
私はそれを試みました。例外はありませんが、Seq列はありますが、すべての値は空です。どのような時点でファイルを書くべきですか?すべてのforループの後またはforループの中で?私はこのすべてのものに本当に新しいです。 – Tirion
最後にファイルを書きます。あなたが望むものすべてを抽出した後。以下のpiRSquared'dメソッドは出力を抽出しませんでしたか?ファイルが正しく読み込まれていることを確認することができます。抽出された最初の10行を表示するには 'print(file.head())'を試してください。 – tmrlvi