如何在熊猫“ to_csv”标头中添加英镑(#)符号?

时间:2019-08-19 15:17:58

标签: python pandas

我有一个pandas DataFrame,我想将 DataFrame保存为制表符分隔的文件格式,并在文件的开头使用英镑(#) 符号标头。

这是我的演示代码:

import pandas as pd
import numpy as np


df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])

file_name = 'test.tsv'

df.to_csv(file_name, sep='\t', index=False)

上面的代码创建一个数据框并将其保存为制表符分隔的值格式。看起来像这样:

a  b  c
1  2  3
4  5  6
7  8  9

但是如何在保存DataFrame的同时在标题中添加添加井号。 我希望输出像下面这样:

#a  b  c
1  2  3
4  5  6
7  8  9

希望我很清楚这个问题,在此先感谢您的帮助。

注意:我想保持DataFrame标头定义不变

2 个答案:

答案 0 :(得分:2)

使用您的代码,只需将a列修改为#a,如下所示

import pandas as pd
import numpy as np


df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['#a', 'b', 'c'])

file_name = 'test.tsv'

df.to_csv(file_name, sep='\t', index=False)

编辑

如果您不想调整起始数据帧,请在发送到csv之前使用.rename

import pandas as pd
import numpy as np


df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])

file_name = 'test.tsv'

df.rename(columns={
    'a' : '#a'
}).to_csv(file_name, sep='\t', index=False)

答案 1 :(得分:1)

使用header参数为列创建别名。

df.to_csv(file_name, sep='\t', index=False,
          header=[f'#{x}' if x == df.columns[0] else x for x in df.columns])

#a  b   c
1   2   3
4   5   6
7   8   9

这是获取列别名的另一种方法:

from itertools import zip_longest
header = [''.join(x) for x in zip_longest('#', df.columns, fillvalue='')]
#['#a', 'b', 'c']