[英]Filtering Unstructured data with Pandas
我有一個從 CSV 導入的數據框,從該文件過濾后,我的臨時 DF 在下面
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_table("/DATA/testing/ADNS/ADNS_01_40405.txt", sep=" ",
error_bad_lines=False,skiprows=1,header=None,skipinitialspace=True)
df.columns = ["ONE","TWO","THREE","FOUR","FIVE","SIX","SEVE","EIGH","NINE","TEN","ELEV"]
tmp = df.ONE.str.contains("topoff", na=False)
#tmp = df.ONE.str.isdigit()
TOP_IP = df.loc[tmp]
TOP_IP
ONE TWO THREE FOUR FIVE SIX SEVE EIGH NINE TEN ELEV 483 topoff.pgw-s5s8.epgAMD02.node.epc.mnc005.mcc40... 86400 IN A 203.88.1.58 NaN NaN NaN NaN NaN NaN 484 topoff.sgw-s5s8.epgAMD02.node.epc.mnc005.mcc40... 86400 IN A 10.169.19.89 NaN NaN NaN NaN NaN NaN 486 topoff.pgw-s5s8.epgAMD03.node.epc.mnc005.mcc40... IN A 203.88.3.11 NaN NaN NaN NaN NaN NaN NaN 487 topoff.sgw-s5s8.epgAMD03.node.epc.mnc005.mcc40... IN A 10.169.18.16 NaN NaN NaN NaN NaN NaN NaN 489 topoff.pgw-s5s8.epgAMD06.node.epc.mnc005.mcc40... IN A 203.88.1.49 NaN NaN NaN NaN NaN NaN NaN 490 topoff.sgw-s5s8.epgAMD06.node.epc.mnc005.mcc40... IN A 203.88.2.190 NaN NaN NaN NaN NaN NaN NaN 492 topoff.pgw-s5s8.epgAMD07.node.epc.mnc005.mcc40... IN A 203.88.4.132 NaN NaN NaN NaN NaN NaN NaN 493 topoff.sgw-s5s8.epgAMD07.node.epc.mnc005.mcc40... IN A 203.88.2.190 NaN NaN NaN NaN NaN NaN NaN 495 topoff.pgw-s5s8.epgAMRELICLOUD.node.epc.mnc005... IN A 112.110.84.25 NaN NaN NaN NaN NaN NaN NaN 496 topoff.sgw-s5s8.epgAMRELICLOUD.node.epc.mnc005... IN A 112.110.84.29 NaN NaN NaN NaN NaN NaN NaN 498 topoff.pgw-s5s8.epgBARODACLOUD.node.epc.mnc005... IN A 203.88.4.156 NaN NaN NaN NaN NaN NaN NaN 499 topoff.sgw-s5s8.epgBARODACLOUD.node.epc.mnc005... IN A 203.88.16.7 NaN NaN NaN NaN NaN NaN NaN 501 topoff.pgw-s5s8.epgBHUJCLOUD.node.epc.mnc005.m... IN A 112.110.84.35 NaN NaN NaN NaN NaN NaN NaN 502 topoff.sgw-s5s8.epgBHUJCLOUD.node.epc.mnc005.m... IN A 112.110.84.39 NaN NaN NaN NaN NaN NaN NaN 503 topoff.pgw-s5s8.epgDL02.node.epc.mnc005.mcc404... IN A 203.88.1.37 NaN NaN NaN NaN NaN NaN NaN 505 topoff.pgw-s5s8.epgGODHRACLOUD.node.epc.mnc005... IN A 112.110.84.20 NaN NaN NaN NaN NaN NaN NaN 506 topoff.sgw-s5s8.epgGODHRACLOUD.node.epc.mnc005... IN A 112.110.84.24 NaN NaN NaN NaN NaN NaN NaN
后過濾器我只需要一個和四個字段,其中存在數據,但前兩條記錄不在形狀中。
以下輸出是必需的。
ONE TWO THREE FOUR FIVE SIX SEVE EIGH NINE TEN ELEV 483 topoff.pgw-s5s8.epgAMD02.node.epc.mnc005.mcc40... IN A 203.88.1.58 NaN NaN NaN NaN NaN NaN 484 topoff.sgw-s5s8.epgAMD02.node.epc.mnc005.mcc40... IN A 10.169.19.89 NaN NaN NaN NaN NaN NaN 486 topoff.pgw-s5s8.epgAMD03.node.epc.mnc005.mcc40... IN A 203.88.3.11 NaN NaN NaN NaN NaN NaN NaN 487 topoff.sgw-s5s8.epgAMD03.node.epc.mnc005.mcc40... IN A 10.169.18.16 NaN NaN NaN NaN NaN NaN NaN 489 topoff.pgw-s5s8.epgAMD06.node.epc.mnc005.mcc40... IN A 203.88.1.49 NaN NaN NaN NaN NaN NaN NaN 490 topoff.sgw-s5s8.epgAMD06.node.epc.mnc005.mcc40... IN A 203.88.2.190 NaN NaN NaN NaN NaN NaN NaN 492 topoff.pgw-s5s8.epgAMD07.node.epc.mnc005.mcc40... IN A 203.88.4.132 NaN NaN NaN NaN NaN NaN NaN 493 topoff.sgw-s5s8.epgAMD07.node.epc.mnc005.mcc40... IN A 203.88.2.190 NaN NaN NaN NaN NaN NaN NaN 495 topoff.pgw-s5s8.epgAMRELICLOUD.node.epc.mnc005... IN A 112.110.84.25 NaN NaN NaN NaN NaN NaN NaN 496 topoff.sgw-s5s8.epgAMRELICLOUD.node.epc.mnc005... IN A 112.110.84.29 NaN NaN NaN NaN NaN NaN NaN 498 topoff.pgw-s5s8.epgBARODACLOUD.node.epc.mnc005... IN A 203.88.4.156 NaN NaN NaN NaN NaN NaN NaN
我嘗試過 isdigit 和許多其他功能,但無法這樣做。 任何幫助都合適。
想法是使用DataFrame.shift
僅在由Series.str.isdigit
過濾的TWO
列中使用數字的行,最后重新分配原始第一列:
orig = df['ONE'].copy()
mask = df['TWO'].astype(str).str.isdigit()
df[mask] = df[mask].shift(-1, axis=1)
df['ONE'] = orig
print (df)
ONE TWO THREE \
483 topoff.pgw-s5s8.epgAMD02.node.epc.mnc005.mcc40... IN A
484 topoff.sgw-s5s8.epgAMD02.node.epc.mnc005.mcc40... IN A
486 topoff.pgw-s5s8.epgAMD03.node.epc.mnc005.mcc40... IN A
487 topoff.sgw-s5s8.epgAMD03.node.epc.mnc005.mcc40... IN A
489 topoff.pgw-s5s8.epgAMD06.node.epc.mnc005.mcc40... IN A
490 topoff.sgw-s5s8.epgAMD06.node.epc.mnc005.mcc40... IN A
492 topoff.pgw-s5s8.epgAMD07.node.epc.mnc005.mcc40... IN A
493 topoff.sgw-s5s8.epgAMD07.node.epc.mnc005.mcc40... IN A
495 topoff.pgw-s5s8.epgAMRELICLOUD.node.epc.mnc005... IN A
496 topoff.sgw-s5s8.epgAMRELICLOUD.node.epc.mnc005... IN A
498 topoff.pgw-s5s8.epgBARODACLOUD.node.epc.mnc005... IN A
499 topoff.sgw-s5s8.epgBARODACLOUD.node.epc.mnc005... IN A
501 topoff.pgw-s5s8.epgBHUJCLOUD.node.epc.mnc005.m... IN A
502 topoff.sgw-s5s8.epgBHUJCLOUD.node.epc.mnc005.m... IN A
503 topoff.pgw-s5s8.epgDL02.node.epc.mnc005.mcc404... IN A
505 topoff.pgw-s5s8.epgGODHRACLOUD.node.epc.mnc005... IN A
506 topoff.sgw-s5s8.epgGODHRACLOUD.node.epc.mnc005... IN A
FOUR FIVE SIX SEVE EIGH NINE TEN ELEV
483 203.88.1.58 NaN NaN NaN NaN NaN NaN NaN
484 10.169.19.89 NaN NaN NaN NaN NaN NaN NaN
486 203.88.3.11 NaN NaN NaN NaN NaN NaN NaN
487 10.169.18.16 NaN NaN NaN NaN NaN NaN NaN
489 203.88.1.49 NaN NaN NaN NaN NaN NaN NaN
490 203.88.2.190 NaN NaN NaN NaN NaN NaN NaN
492 203.88.4.132 NaN NaN NaN NaN NaN NaN NaN
493 203.88.2.190 NaN NaN NaN NaN NaN NaN NaN
495 112.110.84.25 NaN NaN NaN NaN NaN NaN NaN
496 112.110.84.29 NaN NaN NaN NaN NaN NaN NaN
498 203.88.4.156 NaN NaN NaN NaN NaN NaN NaN
499 203.88.16.7 NaN NaN NaN NaN NaN NaN NaN
501 112.110.84.35 NaN NaN NaN NaN NaN NaN NaN
502 112.110.84.39 NaN NaN NaN NaN NaN NaN NaN
503 203.88.1.37 NaN NaN NaN NaN NaN NaN NaN
505 112.110.84.20 NaN NaN NaN NaN NaN NaN NaN
506 112.110.84.24 NaN NaN NaN NaN NaN NaN NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.