阻止换行规则应用于标头np.savetxt



我有一个.csv文件,我想保存为.txt以下是我的原始数据:组织数据

我将此文件保存为.txt,并使用以下换行符、注释等规则:

np.savetxt(r'/test/text.txt', df, newline=',n', comments='',fmt='%f', header=''.join(f'{col}t' for col in df.columns)[:-1])

结果文本文件

问题是我需要所有的行都有"以及除第一行外的末尾但在这种情况下,我在上面的代码中指定的换行规则适用于所有行!

知道有什么方法可以防止这种情况发生吗?

或者你知道创建所需文本文件的另一种方法吗?

示例:

将其视为原始数据:

df = pd.DataFrame({'NumberOfPages:float': {0: 96.0, 1: 96.0, 2: 144.0},
'bid:token': {0: 3, 1: 3, 2: 5}})

输出应该是这样的:

bid:token   NumberOfPages:float
3.000000 96.000000,
3.000000 96.000000,
5.000000 144.000000,

但我明白了:

bid:token   NumberOfPages:float,
3.000000 96.000000,
3.000000 96.000000,
5.000000 144.000000,

*注意"第一行中浮动后的符号

您可以在之后删除该字符

import pandas as pd
import numpy as np
df = pd.DataFrame({'NumberOfPages:float': {0: 96.0, 1: 96.0, 2: 144.0},
'bid:token': {0: 3, 1: 3, 2: 5}})
np.savetxt('test.txt', df, newline=',n', comments='',fmt='%f', header=''.join(f'{col}t' for col in df.columns)[:-1])
with open("test.txt", 'r+') as f:
lines = f.readlines()
lines[0] = lines[0].replace(',', '') # Only modify header
f.seek(0)
f.writelines(lines)

输出:

NumberOfPages:float bid:token
96.000000 3.000000,
96.000000 3.000000,
144.000000 5.000000,

请注意,对于非常大的文件,这可能会很慢,因为f.readlines()应该读取文件的所有行。如果可以用空格覆盖逗号,你也可以使用这个,它不会将整个文件加载到内存中:

import pandas as pd
import numpy as np
df = pd.DataFrame({'NumberOfPages:float': {0: 96.0, 1: 96.0, 2: 144.0},
'bid:token': {0: 3, 1: 3, 2: 5}})
np.savetxt('test.txt', df, newline=',n', comments='',fmt='%f', header=''.join(f'{col}t' for col in df.columns)[:-1])
with open("test.txt", 'r+') as f:
header = f.readline()
f.seek(0)
f.write(f"{header[:-2]} ")

输出:

NumberOfPages:float bid:token <--- beware this space
96.000000 3.000000,
96.000000 3.000000,
144.000000 5.000000,

最新更新