我使用以下python代码将数据写入具有列名的CSV文件中。
def get_filename_datetime():
# Use current date to get a text file name.
return "Report-" + str(datetime.date.today())
# Get full path for writing.
filename = get_filename_datetime()
Data = [["FirstName", "LastName","Failed_User_Id"],
[firstname, lastname, faileduserid]]
Reportfilename = os.path.join(reportspath, filename)
myfile = open(Reportfilename + '-Results.csv', "a+")
with myfile:
writer = csv.writer(myfile)
writer.writerows(Data)
我在文件中得到的输出为:
我的预期输出是:
我在文件中得到的输出为:
但是我正在为每一行打印列名。
答案 0 :(得分:0)
那是因为它们在列表Data
中:
Data = [["FirstName", "LastName","Failed_User_Id"],
[firstname, lastname, faileduserid]]
只需删除它们:
Data = [[firstname, lastname, faileduserid]]
有关如何编写标头here的示例。
答案 1 :(得分:0)
我猜您正在循环使用方法get_filename_datetime
,因此您一直将其附加到CSV文件中:
Data = [["FirstName", "LastName","Failed_User_Id"],
[firstname, lastname, faileduserid]]
解决方案是将列名移出循环,仅附加行数据:
Data = [[firstname, lastname, faileduserid]]
答案 2 :(得分:0)
重复出现标题是因为每次添加一行时,也会再次添加标题。您需要将Data
中的第一行分开并写入一次
def get_filename_datetime():
# Use current date to get a text file name.
return "Report-" + str(datetime.date.today())
# Get full path for writing.
filename = get_filename_datetime()
headers = ["FirstName", "LastName","Failed_User_Id"]
Data = [firstname, lastname, faileduserid]
Reportfilename = os.path.join(reportspath, filename)
myfile = open(Reportfilename + '-Results.csv', "a+")
with myfile:
writer = csv.writer(myfile)
if(os.stat(myfile).st_size == 0):
writer.writerows(header)
writer.writerows(Data)
答案 3 :(得分:0)
@mtdot和@schoon的答案都是正确的
如果您想使用熊猫
您可以使用此
`
columns = ['FirstName', 'LastName', 'Failed_User_Id']
header = True
for dataset in datasets:
df = pd.DataFrame(dataset)
df = df[columns]
mode = 'a+'
df.to_csv('./new.csv', encoding='utf-8', mode=mode, header=header, index=False)
header = False
`