【问题标题】:Write data to CSV file with column name using python使用python将数据写入具有列名的CSV文件
【发布时间】:2020-10-14 08:55:21
【问题描述】:

我正在使用下面的 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)

我在一个文件中得到输出:

我的预期输出是:

我在一个文件中得到输出:

但我正在为每一行打印列名。

【问题讨论】:

  • 能否请您提供完整的代码和输出截图或表格结构

标签: python pandas dataframe


【解决方案1】:

@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
`

【讨论】:

    【解决方案2】:

    您正在重复标题,因为每次添加一行时,您也会再次添加标题您需要将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】:

      我猜你是在循环中使用get_filename_datetime 方法,所以你一直将它附加到 CSV 文件中:

      Data = [["FirstName", "LastName","Failed_User_Id"],
                            [firstname, lastname, faileduserid]]
      

      解决方案是将列名移出循环,仅追加行数据:

       Data = [[firstname, lastname, faileduserid]]
      

      【讨论】:

        【解决方案4】:

        那是因为他们在列表中Data

        Data = [["FirstName", "LastName","Failed_User_Id"],
                              [firstname, lastname, faileduserid]]
        

        只需删除它们:

        Data = [[firstname, lastname, faileduserid]]
        

        标题here的写法示例。

        【讨论】:

        • 但我需要为每个库提供库名称
        • 循环前只写一次,看我提供的链接。
        猜你喜欢
        • 2017-05-17
        • 2015-01-21
        • 2019-03-08
        • 2018-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-29
        • 1970-01-01
        相关资源
        最近更新 更多