如何在pandas数据帧的第二行中添加列标题?

时间:2019-01-23 10:21:11

标签: python python-3.x pandas csv

我有一个来自熊猫的数据框框架,现在我想添加列名,但仅适用于第二行。这是我之前的输出示例:

enter image description here

所需的输出:

enter image description here

我的代码:

data_line=open("file1.txt", mode="r")

lines=[]
for line in data_line:
    lines.append(line)
for i, line in enumerate(lines):
    # print('{}={}'.format(i+1, line.strip()))
    file1_header=lines[0] 
num_line=1
Dictionary_File1={}
Value_File1= data_type[0:6]
Value_File1_short=[]
i=1
for element in Value_File1:
    type=element.split(',')
    Value_File1_short.append(type[0] + ", " + type[1] + ", " + type[4])
    i += 1
Dictionary_File1[ file1_header]=Value_File1_short
pd_file1=pd.DataFrame.from_dict(Dictionary_File1)

3 个答案:

答案 0 :(得分:0)

您应该看看DataFrame.read_csv。通过header关键字参数,您可以指示文件中用于标题名称的一行。

您可能可以使用类似的方法做到这一点:

pd.read_csv("file1.txt", header=1)

在我的python shell中,我用以下方法进行了测试:

>>> from io import StringIO # I use python3
>>> import pandas as pd
>>> >>> data = """Type    Type2   Type3
... A           B   C
... 1           2   3
... red     blue    green""" 
>>> # StringIO below allows us to use "data" as input to read_csv
>>> # "sep" keyword is used to indicate how columns are separated in data
>>> df = pd.read_csv(StringIO(data), header=1, sep='\s+')
>>> df
     A     B      C
0    1     2      3
1  red  blue  green

答案 1 :(得分:0)

因此,如果我理解正确,您将拥有一个包含数据的文件“ file.txt”和一个包含数据类型的列表。 您想要将类型列表添加到数据的pandas.DataFrame中。是吗?

如果是这样,您可以使用pandas.read_csv()将txt文件中的数据读取到pandas.df中,然后使用df.columns定义列标题。

所以它看起来像: df = pd.read_csv("file1.txt", header=None) df.columns = data_type[0:6]

我希望这会有所帮助! 干杯

答案 2 :(得分:0)

您可以在将数据帧写入同一文件之前,使用csv模块 写入一行。请注意,这在读回Pandas时无济于事,后者不适用于“重复标题”。您可以创建MultiIndex列,但这对于所需的输出不是必需的。

import pandas as pd
import csv
from io import StringIO

# input file
x = """A,B,C
1,2,3
red,blue,green"""

# replace StringIO(x) with 'file.txt'
df = pd.read_csv(StringIO(x))

with open('file.txt', 'w', newline='') as fout:
    writer = csv.writer(fout)
    writer.writerow(['Type', 'Type2', 'Type3'])
    df.to_csv(fout, index=False)

# read file to check output is correct
df = pd.read_csv('file.txt')

print(df)

#   Type Type2  Type3
# 0    A     B      C
# 1    1     2      3
# 2  red  blue  green