我有一个来自熊猫的数据框框架,现在我想添加列名,但仅适用于第二行。这是我之前的输出示例:
所需的输出:
我的代码:
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)
答案 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