python - df.csv 没有保存实际的数据帧
问题描述
该代码工作正常并打印所有所需的值,但是当我尝试将其另存为 df 到 csv 时,所有行都是相同的。
a.csv 文件内容
域
A.com
AMD.com
AMD.com
美国在线
美国在线
AWS.com
AWS.com
3ammagazine.com
3dmail.com
3email.com
3xl.net
444.net
4email.com
4email.net
4mg.com
4newyork.com
whdskcisail.com
wrestlingpages.com
雷克斯汉姆网
import whois
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import socket
import os
import csv
import datetime
import time
import requests
from ipwhois import IPWhois
from urllib import request
from ipwhois.utils import get_countries
import tldextract
from ipwhois.utils import get_countries
countries = get_countries(is_legacy_xml=True)
from ipwhois.experimental import bulk_lookup_rdap
from ipwhois.hr import (HR_ASN, HR_ASN_ORIGIN, HR_RDAP_COMMON, HR_RDAP, HR_WHOIS, HR_WHOIS_NIR)
countries = get_countries(is_legacy_xml=True)
import ipaddress
df = pd.read_csv('a.csv', nrows=100)
#TimeOut Setting
s = socket.socket()
s.settimeout(10)
#Date Processing Function
def check_date_type(d):
if type(d) is datetime.datetime:
return d
if type(d) is list:
return d[0]
for index,row in df.iterrows():
try:
DN = df.iloc[index]['Domains']
ip = socket.gethostbyname(DN)
ipwhois = IPWhois(ip).lookup_whois()
print(DN)
print(ip)
print(ipwhois)
df['IPcity'][index] = ipwhois['nets'][0]['city']
df['ASNumber'][index] = ipwhois['asn']
df['NetAddr'][index] = ipwhois['nets'][0]['address']
df['NetCity'][index] = ipwhois['city']
df['NetPostCode'][index] = ipwhois['nets'][0]['postal_code']
df.to_csv('a1.csv', index=False)
except Exception as e:
print(e)
df['e'] = e # want to save the errors in a differet column
df.to_csv('a2.csv', index=False)
解决方案
发生这种情况是因为您在循环的每次迭代中都覆盖了 .csv 文件。如果您移动df.to_csv()
循环外部,您将获得所需的数据框:
...
for index,row in df.iterrows():
try:
DN = df.iloc[index]['Domains']
ip = socket.gethostbyname(DN)
ipwhois = IPWhois(ip).lookup_whois()
print(DN)
print(ip)
print(ipwhois)
df['IPcity'][index] = ipwhois['nets'][0]['city']
df['ASNumber'][index] = ipwhois['asn']
df['NetAddr'][index] = ipwhois['nets'][0]['address']
df['NetCity'][index] = ipwhois['city']
df['NetPostCode'][index] = ipwhois['nets'][0]['postal_code']
except Exception as e:
print(e)
df['e'] = e # want to save the errors in a differet column
df.to_csv('a1.csv', index=False)
推荐阅读
- android - Expo 无法在 Android 上启动项目:无法连接到 TCP 端口 5554:连接被拒绝
- java - 如何使用 selenium 检查 Jenkins 登录页面的 remember_me 复选框?
- reactjs - 如何在视口中为多个帧运动元素设置动画
- c# - 128 位模式的 CBC 加密块大小
- .net-core - VS2019(简单控制台应用程序) - 无法加载文件或程序集“System.Runtime.dll”或其依赖项之一
- google-cloud-platform - 如何从 ~/.ssh/google_compute_engine 恢复私钥
- rdp - Azure VM RDP 连接 - 用户名
- python - 在数组中导入数据集时,谷歌 colab 中的 ram 用完了
- java - 在 Openshift Container Platform(基于云的 Kubernetes 容器平台)中通过 spring boot 调用服务时 Name or Service not Known
- django - 为什么我在 Django 中收到“找不到页面”错误?