即使存在 for 循环,Python df.to_csv 也只打印最后一行

杰基

我正在编写一个代码,其中最终结果(用 x 表示)要导出到 csv 文件。我使用了一个 for 循环来迭代,但它只导出结果的最后一行。我的完整代码如下:

import csv
import itertools
import requests
import json
import pandas as pd


domainfile=open('domainsinfo.csv',newline='',encoding='utf_8')
reader=csv.reader(domainfile)
w=[]
  for row in reader:
    w.extend(row)

domain = list(itertools.permutations(w,1))
print(domain)

 def url_report(domain):
    url = 'https://www.virustotal.com/vtapi/v2/url/report'
    params = {'apikey': '', 'resource':domain}
    response = requests.get(url, params=params)
    return response

def pp_json(json_thing, sort=True, indents=4):
        if type(json_thing) is str:
            print(json.dumps(json.loads(json_thing), sort_keys=sort, 
    indent=indents))
      else:
              print(json.dumps(json_thing, sort_keys=sort, 
 indent=indents))
      return None


for d in domain:
    response = url_report(d)
    json_response = response.json()
    pretty_json = pp_json(json_response)

    response_list=[]
    for key in json_response['scans']:   

        if json_response['scans'][key] ['detected'] is True:      
            response_list.append(True)
        else:
            response_list.append(False)
    x=any(response_list)
    print(x)


    for d in domain:        
      final_list=[]

    final_list.append(x)
    result=(final_list)
    result_table = {'Domain': [d], 'Result':result}

    df=pd.DataFrame(data=result_table) 
    print(df)

    export_csv = df.to_csv (r'C:\csv', index=None, header=True)

print(pretty_json)


input()

有人可以解释为什么即使存在 for 循环这也不起作用

安库·辛哈

就像 liakoyras 提到的那样,您正在将数据框写入 CSV。有很多方法可以解决您的问题。虽然他建议合并,但我在这里使用append为您提供另一种选择阅读文档以获取更多信息。

以下是您需要修改代码块的方法,代码中的注释中有说明:

######## Declare a dataframe outside the loop
final = pd.DataFrame()

for d in domain:
    ........................
       your other codes
    ........................
    result_table = {'Domain': [d], 'Result':result}

    df=pd.DataFrame(data=result_table) 

    ###### keep appending df to final 
    ###### the final df now gets updated in every loop
    final = final.append(df)

#### now outside the loop, write final dataframe to your csv
final.to_csv('your/path/file.csv')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Powershell-导出-CSV外循环,仅最后一行被打印/导出

来自分类Dev

只打印一行 csv 文件

来自分类Dev

如何从python中的df减去(最后一列,最后一行)减去(最后一列,第一行)

来自分类Dev

Python 3:按最后一行的列值排序DF的字典

来自分类Dev

python socket只接收最后一行

来自分类Dev

如何只删除一行csv并将更改保存在同一csv中?[蟒蛇]

来自分类Dev

python parse只打印列表的第一行

来自分类Dev

CSV的第一行和最后一行的Python Pandas DataFrame

来自分类Dev

Python CSV 行循环

来自分类Dev

Python:从CSV读取时,for循环在第一行停止

来自分类Dev

打印使用Python读入的文件的最后一行

来自分类Dev

打印使用Python读入的文件的最后一行

来自分类Dev

如何在Python中打印列表的最后一行?

来自分类Dev

Python Pandas DataFrame to_csv奇怪的格式

来自分类Dev

for循环仅将最后一行保存在数据库中

来自分类Dev

熊猫-使用to_csv编写Multiindex行

来自分类Dev

熊猫列的To_CSV唯一值

来自分类Dev

Python从for循环打印时打印下一行

来自分类Dev

为什么csv.DictWriter只返回字典的最后一行?

来自分类Dev

Python:将 CSV 列转换为数组,第一行和最后一行除外

来自分类Dev

循环发送多个Pandas DataFrames .to_csv()

来自分类Dev

在大循环中优化时间熊猫to_csv

来自分类Dev

从.txt或.csv Python提取前2行和最后一行

来自分类Dev

循环仅打印文件的最后一行(2个循环后)

来自分类Dev

Python循环仅在cassandra中插入最后一行

来自分类Dev

Python从for循环中的最后一行删除逗号

来自分类Dev

获取完整的`df`输出的最后一行

来自分类Dev

Python:for循环-在同一行上打印

来自分类Dev

Python:for循环-在同一行上打印

Related 相关文章

热门标签

归档