我有一个样本dataData_sample_truncated.txt),该样本已从大数据中删除。它具有3个字段-"Index", "Time" and "RxIn.Density[**x**, ::]"在这里我使用x作为整数,因为x可以在任何范围内变化。在此数据中为0-15。 3列字段的组合是唯一的。对于不同的"Index"字段,"Time" and "RxIn.Density[**x**, ::]"可以相同或不同。对于每个新的"Index"值,数据都有一个blank line和几乎相似的列标题,但"RxIn.Density[**x**, ::]"除外,当达到新的x值时"Index"会增加。我从ADS(电路仿真软件)导出的数据在导出时给了我这种格式。

现在,我要格式化数据,以便所有数据在3个唯一的列字段-"Index", "Time" and "RxIn.Density"下合并在一起。您可以看到我要在第三列的新数据框中删除字符串[**x**, ::]。这是格式化(Data-format_I_want_after_formatting.txt)后的sample final data file that I want。所以我想要以下内容-


要删除的空白行(或行)
要删除的所有其他标题行仅保留顶部标题并将第三列标题更改为"RxIn.Density"
即使数据值重复,也将所有数据合并在唯一列字段-"Index", "Time" and "RxIn.Density"下。


我的MATLAB代码在下面:

import pandas as pd

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

#boolean mask for identify columns of new df
m = df['v'].str.contains('RxIn')

#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']]

df = df.drop_duplicates(subset=['index', 'time'], keep=False)

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


生成的target.txt文件不是我想要的。您可以here检查它。任何人都可以帮助解决我的代码的问题以及如何解决该问题,以免我想要的格式吗?

我正在使用Spyder 3.2.6(Anaconda),其中嵌入了python 3.6.4 64位。

最佳答案

您可以过滤掉不需要的行(检查this):

import pandas as pd
df = pd.read_csv('Data_sample_truncated.txt', sep="\s+")
df.columns = ["index","time","RxIn.Density","1"]
del df["1"]
df = df[~df["RxIn.Density"].str.contains("Rx")].reset_index(drop=True)
df.to_csv('target.txt', index=False, sep='\t')

10-06 04:58