在附加到带有Python的数据帧时保留标题

在附加到带有Python的数据帧时保留标题,python,pandas,dataframe,Python,Pandas,Dataframe,因此,我正在解析包含在许多文件中的数据,循环遍历这些文件并将某些元素存储在一个列表中,然后使用Python将每个结果列表附加到一个数据框中 它可以工作,只是我不知道如何在追加时保持标题行。它要么消失,要么与每个附加一起复制 以下代码作为最新代码的示例: import pandas as pd for i in range(1,4): data = [{'name': 'Company'+str(i), 'city': 'New York'}] stuff = [] f

因此,我正在解析包含在许多文件中的数据,循环遍历这些文件并将某些元素存储在一个列表中,然后使用Python将每个结果列表附加到一个数据框中

它可以工作,只是我不知道如何在追加时保持标题行。它要么消失,要么与每个附加一起复制

以下代码作为最新代码的示例:

import pandas as pd

for i in range(1,4):
    data = [{'name': 'Company'+str(i), 'city': 'New York'}]

    stuff = []
    for element in data:
        stuff.append(element)

    df = pd.DataFrame(columns=["name",
                               "city"])

    for record in stuff:
        df = df.append(record, ignore_index=True)

    df.to_csv('test.csv', mode='a', header=False, index=False)
使用此代码,输出csv文件为:

Company1    New York
Company2    New York
Company3    New York
但我希望输出为:

name        city
Company1    New York
Company2    New York
Company3    New York
谢谢

但您已将header=False设置为:

你应该做:

df.to_csv('test.csv', mode='a', header=True, index=False)
您只需要在第一次迭代中将其设置为True,然后在后续迭代中将其设置为False

基本上,您只需执行以下操作:

# add this outside your for loop
writeHeader = True

# use the following where you write to csv
if writeHeader is True:
    df.to_csv('test.csv', mode='a', header=True, index=False)
    writeHeader = False
else:
    df.to_csv('test.csv', mode='a', header=False, index=False)
或类似

因此,整个过程看起来是这样的:

import pandas as pd
writeHeader = True

for i in range(1,4):
    data = [{'name': 'Company'+str(i), 'city': 'New York'}]

    stuff = []
    for element in data:
        stuff.append(element)

    df = pd.DataFrame(columns=["name",
                               "city"])

    for record in stuff:
        df = df.append(record, ignore_index=True)

    if writeHeader is True:    
        df.to_csv('test.csv', mode='a', header=True, index=False)
        writeHeader = False
    else:
        df.to_csv('test.csv', mode='a', header=False, index=False)
但您已将header设置为False:

你应该做:

df.to_csv('test.csv', mode='a', header=True, index=False)
您只需要在第一次迭代中将其设置为True,然后在后续迭代中将其设置为False

基本上,您只需执行以下操作:

# add this outside your for loop
writeHeader = True

# use the following where you write to csv
if writeHeader is True:
    df.to_csv('test.csv', mode='a', header=True, index=False)
    writeHeader = False
else:
    df.to_csv('test.csv', mode='a', header=False, index=False)
或类似

因此,整个过程看起来是这样的:

import pandas as pd
writeHeader = True

for i in range(1,4):
    data = [{'name': 'Company'+str(i), 'city': 'New York'}]

    stuff = []
    for element in data:
        stuff.append(element)

    df = pd.DataFrame(columns=["name",
                               "city"])

    for record in stuff:
        df = df.append(record, ignore_index=True)

    if writeHeader is True:    
        df.to_csv('test.csv', mode='a', header=True, index=False)
        writeHeader = False
    else:
        df.to_csv('test.csv', mode='a', header=False, index=False)

我也不理解你的代码,这是你的真实代码还是模型代码,因为如果它按照你想要的方式工作,它只会创建一个csv 4次,第一个覆盖3次。作为一个例子,它是一个模型。我也不理解你的代码,这是你的真实代码还是模型代码,因为如果它按照你想要的方式工作,它只需要创建一个csv 4次,第一个覆盖3次。代码作为一个例子,它是一个模型。