我有一個ip數據包作爲CSV文件,我嘗試從信息字段中提取序列號到一個單獨的列,只有序列號。序列號是信息字符串中間的子字符串。所以這裏是我的原始代碼。首先,我爲序列號創建一個新列,然後檢查信息字段是否包含Seq編號,然後分割信息字段,以便只顯示序列號。如果我在'Seq = j.split ...'後打印,我確實得到了正確的值。我如何將它寫入CSV文件Seq列?將數據複製到Python /熊貓中的另一列
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方法沒有提取任何輸出?您可能需要檢查文件是否正確讀取。嘗試'print(file.head())'查看提取的前10行。 – tmrlvi