使用Python附加到Pandas数据帧时保留头

2024-04-26 13:40:12 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我要解析包含在许多文件中的数据,循环遍历这些文件并将某些元素存储在一个列表中,然后使用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文件)为:

^{pr2}$

但我希望输出是:

name        city
Company1    New York
Company2    New York
Company3    New York

谢谢!在


Tags: 文件csv数据代码nameincitydf
1条回答
网友
1楼 · 发布于 2024-04-26 13:40:12

但您已经设置了header=False

df.to_csv('test.csv', mode='a', header=False, index=False)

您应该:

^{pr2}$

您只需要在第一次迭代中将其设置为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)

相关问题 更多 >