python - 使用 pandas to_csv 将结果写入 csv

标签 python pandas export-to-csv

下面是我的代码,它从 Excel 工作表中获取实例名称,并在 aws 帐户中搜索实例名称并获取实例 ID。所以这个过程运行良好。现在我想将数据写入 csv,就像在 csv 中一样,必须有两列,其名称如实例名称和实例 ID,并且数据应打印在各自的列中。请帮助我获得所需的输出。 csv 与数据重叠,一旦打开 csv,我只能看到其中的最后一个值,因为我的脚本会覆盖以前的结果。

import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import numpy as np
import os
import boto3
client = boto3.client('ec2')
THIS_FOLDER = os.path.dirname(os.path.abspath(__file__))
my_file = os.path.join(THIS_FOLDER, 'example.xlsx')

df = pd.read_excel(my_file, sheet_name='Sheet2')

list1 = df['EC2NAMES']
print(list1)
client = boto3.client('ec2')
for names in list1:
    custom_filter = [{
        'Name':'tag:Name', 
        'Values': [names]}]
    print(names)
    instances = client.describe_instances(Filters=custom_filter)
    for instance in instances['Reservations']:
        for key in instance["Instances"]:
            x = key['InstanceId']
            print(x)
            data = pd.DataFrame({'A' : [names],'B' : [x]})
            data.to_csv('df111111.csv')

预期输出:

Instancename  InstanceID
testinstance  123456
testinstance1 12345656312
testinstance2 12345657237

实际输出:

Instancename  InstanceID
testinstance2 12345657237

最佳答案

您可以使用 pandas concatappend 但最好的方法是将数据存储到列表中,最后制作一个数据框并将其保存为 csv。

import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import numpy as np
import os
import boto3
client = boto3.client('ec2')
THIS_FOLDER = os.path.dirname(os.path.abspath(__file__))
my_file = os.path.join(THIS_FOLDER, 'example.xlsx')

df = pd.read_excel(my_file, sheet_name='Sheet2')

list1 = df['EC2NAMES']
print(list1)
client = boto3.client('ec2')
data = []
for names in list1:
    custom_filter = [{
        'Name':'tag:Name', 
        'Values': [names]}]
    print(names)
    instances = client.describe_instances(Filters=custom_filter)
    for instance in instances['Reservations']:
        for key in instance["Instances"]:
            x = key['InstanceId']
            print(x)
            data.append([names, x])
pd.DataFrame(data, colums=['A','B']).to_csv('df111111.csv')

关于python - 使用 pandas to_csv 将结果写入 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58963453/

相关文章:

python - 将 csv 文件与 pySpark 进行比较

python - 使激光探测器在我的代码中有错误

python - 检查列表是否包含 int、str、tuple 和子列表的优雅方法

python - 对数据框中的值进行排序

python - 如何根据值拆分 pandas 中的一列并创建新列?

mysql - 将 MYSQL 表导出为 CSV 时如何处理空字段

Python 3 键盘中断多线程

python - 在 Cython 中创建不等长的 numpy.ndarray 列表

python - 可以在 pandas 数据框中创建子列吗?

python - 从 Flask 以 CSV 形式返回 Numpy 数组