[英]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.