Reputation: 11
I have a data frame import from CSV , post filtering from that file my temporary DF is below
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
post filter i need only ONE and FOUR field where data are present but first Two records are not in the shape .
below output is required .
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
I have tried isdigit and lot of other function and not able to do so . any help will appropriate.
Upvotes: 0
Views: 99
Reputation: 863166
Idea is use DataFrame.shift
only rows with numeric in TWO
column filtered by Series.str.isdigit
, last reassign original first column:
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
Upvotes: 1