簡體   English   中英

Python - Pandas 在 Dataframe 中插入列一次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM