【发布时间】:2019-01-21 18:09:51
【问题描述】:
我想将文本文件中的数据格式化为特定格式。我的数据文件包含超过 120000 行,但我在这里发布了截断的数据。数据文件具有不同频率的 R、L、G、C 数据(这里 3 行中的 3 个频率)。该文件只有 2 列,第 1 列是“Freq”,第 2 列是 RLGC 数据之一。现在我想将数据操作为另一种格式(比如说,目标 .txt)。这是数据的link。我想把它转换成this这样的目标文件。
这是我的代码:
import pandas as pd
#create DataFrame from csv with columns f and v
df = pd.read_csv('data_in.txt', sep="\s+", names=['freq','v'])
#df = df.astype(float).convert_objects()
#boolean mask for identify columns of new df
m = df['v'].str.endswith('R', 'L', 'G', 'C')
#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.columns = [x.replace('R','R1:1').replace('L','L1:1').replace('G','G1:1').replace('C','C1:1') for x in df.columns]
df.to_csv('target.txt', index=False, sep='\t')
但它给出了以下错误:
TypeError: wrapper3() takes from 2 to 3 positional arguments but 5 were given
谁能帮我把它格式化成目标文件。
现在我需要目标文件以外的另一种格式。我需要格式化为“target_2.txt”。这是另一种不寻常的格式,也是需要的。您可以看到每个 R1:1、L1:1、G1:1 和 C1:1 数据现在看起来像一个数组块(尽管不是数组)。如果你仔细观察,对于freq,它应该命名为FORMAT Freq,然后是tab,然后是:,然后是tab,然后是R1:1。如果你看到,它会像 - FORMAT Freq+tab+:+tab+R1:1。然后是new line,然后是2 tabs,然后是L1:1。然后是new line,然后是2 tabs,然后是G1:1。最后,C1:1 也一样。之后是一个空行,然后是第一行数据,第二行数据并继续。数据值将根据标题行。
第二个目标文件怎么做?
我正在使用 Spyder 3.2.6,其中嵌入了 python 3.6.4 64 位。
【问题讨论】:
标签: python python-3.x pandas dataframe data-manipulation