在仅将文本文件中的标头更改为Python中的新文件之前将其保存

时间:2018-08-14 14:01:51

标签: python pandas dataframe data-manipulation dataformat

我只想更改数据文件的标题行,然后再将其保存到格式化后的新文件中。我的数据充满了具有指数的浮动数据。我正在使用Spyder 3.2.6,其中嵌入了python 3.6.4 64位。

这是我的数据文件link。由于R,L,G,C字段中的每个字段都有3001行,因此在原始数据文件中总共有480062行被截断了。

我的数据格式代码如下:

import pandas as pd

#create DataFrame from csv with columns f and v 
df = pd.read_csv('data.txt', sep="\s+", names=['freq','v'])

#boolean mask for identify columns of new df   
m = df['v'].str.endswith(')')
#new column by replace NaNs by forward filling
df['g'] = df['v'].where(m).ffill()
#get original ordering for new columns
cols = df['g'].unique()
#remove rows with same values in v and g columns
df = df[df['v'] != df['g']]
#reshape by pivoting with change ordering of columns by reindex
df = df.pivot('freq', 'g', 'v').rename_axis(None, axis=1).reindex(columns=cols).reset_index()


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

现在目标文件另存为“ target.txt”,其标题行如下所示:

freq    R(1,1)  R(1,2)  R(2,1)  R(2,2)  L(1,1)  L(1,2)  L(2,1)  L(2,2)  G(1,1)  G(1,2)  G(2,1)  G(2,2)  C(2,2)  C(1,1)  C(1,2)  C(2,1)

在这里您可以看到每个列都由一个“标签”分隔。标题行之所以这样,是因为它从输入文件中获取字符串或数据,而输入文件中的数据字符串就是这样。

现在,我希望我的标题行与下面的内容有所不同,以进行进一步处理。您能帮我在将数据保存到新文件“ target.txt”之前,如何将其更改为标题行以下?

Freq    R1:1    R1:2    R2:1    R2:2    L1:1    L1:2    L2:1    L2:2    G1:1    G1:2    G2:1    G2:2    C1:1    C1:2    C2:1    C2:2

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以像这样重命名标题

df.columns = [x.replace('(','').replace(')','').replace(',',':') for x in df.columns]

将数据框保存到csv之前。