gpt4 book ai didi

python - 在Python中解析APNIC批量whois数据

转载 作者:行者123 更新时间:2023-12-01 01:47:20 25 4
gpt4 key购买 nike

我有一个包含bulkwhois数据的pandas数据框,它存储在一个txt文件中。它包含 12,517,501 行,其中一列中一遍又一遍地重复几乎相同的信息。所有条目均以“inetnum”开头,以“source:源名称 1”结尾。两者之间的大多数信息都具有相同的信息,但其中一些信息是无序的,例如某些条目有 3 个描述,而其他条目有 4 个描述。另一件事是,例如,第一个条目“admin-c:admin 1”位于“descr:描述1”之后,但第二个条目“admin-c:admin 2”位于“国家/地区:国家/地区名称2”之后。 df 是单列。以下是前两个条目:

data
inetnum: ip range 1
netname: net name 1
country: country name 1
descr: description 1
descr: description 1
descr: description 1
admin-c: admin 1
tech-c: tech 1
status: status 1
mnt-by: mnt-by 1
mnt-routes: mnt-routes 1
last-modified: last modified 1
source: source name 1
inetnum: ip range 2
netname: net name 2
descr: description 2
descr: description 2
descr: description 2
country: country name 2
admin-c: admin 2
tech-c: tech 2
mnt-by: mnt-by 2
remarks: remarks 2
status: status 2
last-modified: last modified 2
source: source name 1

我希望输出的每个条目都以“inetum:”开头并以“source:源名称 1”结尾,这些内容始终保持不变,格式如下:

inetnum    netname     ...  source
ip range 1 net name 1 ... source name 1
ip range 2 net name 2 ... source name 1

我在想是否将一列分成两列,例如:

apnic2entry2 = pd.DataFrame(apnic2entry.data.str.split(':',1).tolist(),
columns = ['field', 'data'])

这给了我一个字段和数据列:

field    data    
inetnum ip range 1
netname net name 1
country country name 1
... ...

然后可能会进行转置并将数据列与字段进行匹配。

如何获得此输出?

inetnum    netname     ...  source
ip range 1 net name 1 ... source name 1
ip range 2 net name 2 ... source name 1

最佳答案

让我们试试这个。

df_out = df['data'].str.split(': ', expand=True)
df_out = df_out.set_index([0,(df_out[0] == 'inetnum').cumsum().rename('row')])
df_out = df_out.set_index(df_out.groupby([0,'row']).cumcount(), append=True)
df_out = df_out.reset_index('row')
df_out.index = df_out.index.map('{0[0]}_{0[1]}'.format)
df_out = df_out.set_index(['row'], append=True)[1].unstack(0)
df_out = df_out.rename(columns=lambda x: x.split('_0')[0]).reset_index()
print(df_out)

输出:

   row  admin-c         country          descr        descr_1        descr_2     inetnum    last-modified    mnt-by    mnt-routes     netname    remarks         source    status  tech-c
0 1 admin 1 country name 1 description 1 description 1 description 1 ip range 1 last modified 1 mnt-by 1 mnt-routes 1 net name 1 NaN source name 1 status 1 tech 1
1 2 admin 2 country name 2 description 2 description 2 description 2 ip range 2 last modified 2 mnt-by 2 NaN net name 2 remarks 2 source name 1 status 2 tech 2

关于python - 在Python中解析APNIC批量whois数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51139036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com