我有一个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标头定义不变
答案 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']