Python在数据帧中插入列一次

2024-09-28 05:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个Python程序来查找域列表的MX记录,并将其输出到CSV文件中。到目前为止,一切正常,但我遇到了一个小问题,我似乎无法理解

这是我的密码:

import dns.resolver
import pandas as pd

mx = []
domans = []
provider = pd.Series([])
domain = input("Domain Name\n")
result = dns.resolver.resolve(domain, 'MX')
for exdata in result:
  exdata = str(exdata)
  exdata = exdata.split(" ")
  mx.append(exdata[1])

domain = domain + ","
num_domains = domain * len(mx)
num_domains = str(num_domains)
num_domains = num_domains.split(",")

for g in num_domains:
  g = str(g)
  g = g.split(",")
  domans.append(g[0])

if any("mail.protection.outlook.com" in x for x in exdata):
  provider = "Office 365"
elif any("google" in x for x in exdata):
  provider = "Google"
elif any("mimecast" in x for x in exdata):
  provider = "Mimecast"

dataset = pd.DataFrame(list(zip(domans, mx)))
dataset.insert(2, "Provider", provider) 
dataset.sample(0)
dataset.columns = ['domain','mx record','Provider']
dataset.dropna(axis = 0, how = 'any', inplace = True)
dataset.index = pd.RangeIndex(len(dataset.index))

dataset.to_csv (r'export_dataframe.csv', index = False, header=True)

以下是输入为google.com时的CSV结果

domain,mx record,Provider
google.com,alt3.aspmx.l.google.com.,Google
google.com,alt1.aspmx.l.google.com.,Google
google.com,alt2.aspmx.l.google.com.,Google
google.com,alt4.aspmx.l.google.com.,Google
google.com,aspmx.l.google.com.,Google

我只想让提供商只打印一次“google”。通过这种方式,我可以查看CSV列表并获取准确的提供商数量

欢迎您的任何意见


Tags: incomfordomaingoogleanyproviderdataset
1条回答
网友
1楼 · 发布于 2024-09-28 05:23:38

我不确定您期望的输出是什么,但可以使用Groupby在保留MX记录的同时使其成为一行

df = df.groupby(['Provider','domain'])['mx record'].agg(list)
df.to_csv (r'export_dataframe.csv', index=True, header=True)

导出_dataframe.csv

Provider,domain,mx record
Google,google.com,"['alt3.aspmx.l.google.com.', 'alt1.aspmx.l.google.com.', 'alt2.aspmx.l.google.com.', 'alt4.aspmx.l.google.com.', 'aspmx.l.google.com.']"

相关问题 更多 >

    热门问题