【问题标题】:Keep header while appending to Pandas dataframe w/ Python在使用 Python 附加到 Pandas 数据帧时保留标题
【发布时间】:2015-02-08 04:46:18
【问题描述】:

所以我正在解析许多文件中包含的数据,循环它们并将某些元素存储在一个列表中,然后使用 Python 将每个结果列表附加到带有 Pandas 的数据框。

它有效,但我不知道如何在追加时保留标题行。它要么消失,要么随着每个追加而重复。

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

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

谢谢!

【问题讨论】:

  • 另外我不明白你的代码,这是你的真实代码还是模拟代码,因为如果它像你想要的那样工作,它只会创建一个 csv 4 次,第一个被覆盖 3次
  • 代码作为示例,它是一个模型。

标签: python pandas dataframe


【解决方案1】:

但是你已经设置了header=False:

df.to_csv('test.csv', mode='a', header=False, index=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)

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 2023-04-10
    • 2016-10-13
    • 1970-01-01
    • 2017-07-07
    • 2020-09-13
    • 2015-12-21
    • 2019-05-02
    • 1970-01-01
    相关资源
    最近更新 更多