将列表附加到 Pandas DataFrame 输出的顶部

Appending a list to the top of Pandas DataFrame output

我将以下文本文件作为输入 (infile.txt)

A foo 3.0
A bar 3.1
B foo 3.0
B bar 3.1

并使用以下代码

import pandas as pd

infile="infile.txt"
df = pd.io.parsers.read_table(infile,header=None,sep=" ")
df.columns = ['sample','celltype','score']
dfp = df.pivot(index='sample',columns='celltype',values='score')
dfp_prc =  dfp.applymap(lambda x: x * 100)
dfp_prc.to_csv("out.txt",sep=" ", index=True)

它生成此 CSV:

sample bar foo
A 310.0 300.0
B 310.0 300.0

然后我想做的,给了一个列表:

mlist = ['sample','XXX','YYY']

我想获得如下所示的最终 CSV 文件:

sample XXX YYY
sample bar foo
A 310.0 300.0
B 310.0 300.0

在Pandas中有什么方便的方法吗?

to_csv 也接受文件名或缓冲区(打开的文件),因此

dfp_prc.to_csv("out.txt",sep=" ", index=True)

使用

import csv

...

mlist = ['sample','XXX','YYY']
sep = ' '
with open('out.txt', 'w') as f:
    csv.writer(f, delimiter=sep, lineterminator='\n').writerow(mlist)
    dfp_prc.to_csv(f, sep=sep, index=True)

所以你打开一个文件,使用 csv.writer 插入一行,然后在导出 DataFrame 的相同打开的文件中。