【发布时间】:2020-03-16 17:00:18
【问题描述】:
下面是我的代码,它从 excel 表中获取实例名称并在 aws 帐户中搜索实例名称并获取实例 ID。所以这个过程运行良好。现在我想将数据写入 csv,就像在 csv 中一样,必须有两列名称如 instancename 和 instanceId,并且数据应该打印在相应的列中。请帮助我获得所需的输出。 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
【问题讨论】:
-
每次循环都会覆盖 CSV 文件。
-
您应该将所有数据合并到一个数据帧中,然后在最后将其写入 CSV 一次。
-
请发布数据。
data.to_csv('df111111.csv')在每次迭代中覆盖data对象 -
我可以使用 to_csv@Barmar 在同一个 csv 中写入不同的工作表
标签: python pandas export-to-csv