【发布时间】:2019-07-18 10:32:38
【问题描述】:
我正在尝试从数据框列中删除某些字符串,只是想知道如何以更好的方式实现这一点,一种方法是使用多个 replace,但我想避免这种情况。
原始数据
ctflex08 | SUCCESS | rc=0 | (stdout) server ntp-tichmond minpoll 4 maxpoll 10\nserver ntp-tichmond-b minpoll 4 maxpoll 10\nserver 127.127.1.0
ctfclx806 | SUCCESS | rc=0 | (stdout) server ntp-mary.example.com
ctfclx802 | SUCCESS | rc=0 | (stdout) server ntp-mary.example.com
ti-goyala | SUCCESS | rc=0 | (stdout) server ntp-tichmond minpoll 4 maxpoll 10\nserver ntp-tichmond-b minpoll 4 maxpoll 10
数据框结构:
import pandas as pd
matchObj = ['(stdout)', 'server', 'minpoll', 'maxpoll' ]
df = pd.read_csv('ntp_server.txt', sep="|" , names=['Linux_Hosts', 'Host_Dist_version'])
df['Host_Dist_version'] = df['Host_Dist_version'].replace("server", '',regex=True).replace("minpoll", '',regex=True)
print(df)
电流输出:
Linux_Hosts Host_Dist_version
ctflex08 SUCCESS rc=0 (stdout) ntp-tichmond 4 maxpoll 10\n ntp-ti...
ctfclx806 SUCCESS rc=0 (stdout) ntp-mary.example.com
ctfclx802 SUCCESS rc=0 (stdout) ntp-mary.example.com
ti-goyala SUCCESS rc=0 (stdout) ntp-tichmond 4 maxpoll 10\n ntp-ti...
预期输出:
Linux_Hosts Host_Dist_version
ctflex08 ntp-tichmond ntp-tichmond-b
ctfclx806 ntp-mary.example.com
ctfclx802 ntp-mary.example.com
ti-goyala ntp-tichmond ntp-tichmond-b
是否有一种有效的方法来选择所需的字符串并删除或屏蔽它们,例如['ntp-mary', 'ntp-tichmond', 'ntp-tichmond-b'] 只需查看这些列表值并仅选择它们并保留其余部分。
虽然替换了一些特殊的字符和字符串,但它无法正常工作..
SUCCESSS 被视为关键字,\n 也不会被删除。
【问题讨论】:
标签: regex python-3.x pandas