[英]Python - Pandas Insert Column in Dataframe Once
我正在編寫一個 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 列表並捕獲准確數量的提供者。
任何輸入表示贊賞。
我不確定您期望的是什么 output,但可以使用 Groupby 將其設為單行,同時保留 MX 記錄。
df = df.groupby(['Provider','domain'])['mx record'].agg(list)
df.to_csv (r'export_dataframe.csv', index=True, header=True)
export_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.']"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.