我有一个从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和许多其他功能,但无法这样做。 任何帮助将是适当的。
答案 0 :(得分:1)
想法仅使用DataFrame.shift
,其中TWO
列中具有数字的行被Series.str.isdigit
过滤,最后重新分配原始的第一列:
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