Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除重复的标题行或字符串在python中删除相同的列和空行_Python_Python 3.x_Pandas_Dataframe_Spyder - Fatal编程技术网

删除重复的标题行或字符串在python中删除相同的列和空行

删除重复的标题行或字符串在python中删除相同的列和空行,python,python-3.x,pandas,dataframe,spyder,Python,Python 3.x,Pandas,Dataframe,Spyder,我有一个样本(Data\u sample\u truncated.txt),我从大数据中截取了它。它有3个字段-“索引”、“时间”和“RxIn。密度[**x**,::]”这里我使用x作为整数,因为x可以在任何范围内变化。在此数据中,它是0-15。3列字段的组合是唯一的。对于不同的“索引”字段,的“时间”和“RxIn.Density[**x**,:::]”可以相同或不同。对于每个新的“Index”值,数据都有一个空行和几乎相似的列标题,除了“RxIn.Density[**x**,::]”,其中当达

我有一个样本
Data\u sample\u truncated.txt
),我从大数据中截取了它。它有3个字段-
“索引”、“时间”和“RxIn。密度[**x**,::]”
这里我使用x作为整数,因为
x
可以在任何范围内变化。在此数据中,它是
0-15
。3列字段的组合是唯一的。对于不同的
“索引”
字段,
的“时间”和“RxIn.Density[**x**,:::]”
可以相同或不同。对于每个新的
“Index”
值,数据都有一个
空行
和几乎相似的列标题,除了
“RxIn.Density[**x**,::]”
,其中当达到新的
“Index”
值时,
x
增加。我从
ADS
(电路模拟软件)导出的数据在导出时给出了类似的格式

现在我想格式化数据,以便将所有数据合并到3个唯一的列字段下—
“Index”、“Time”和“RxIn.Density”
。您可以看到我想要删除第3列新数据框中的字符串
[**x**,:::]
。以下是格式化后的
Data-format\u I\u-want\u-after\u-formatting.txt
)。所以我想要下面的-

  • 要删除的空行(或行)
  • 要删除的所有其他标题行仅保留顶部标题,并将第三列标题更改为
    “RxIn.Density”
  • 将所有数据合并到唯一的列字段——
    “Index”、“Time”和“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
文件不是我想要的。您可以检查它。有人能帮我解决我的代码有什么问题,以及如何修复它,从而取消我的预期格式吗

我正在使用Spyder 3.2.6(Anaconda),其中嵌入了Python3.6.4 64位

试试这个:

df = pd.read_csv('Data_sample_truncated.txt', sep='\s+', names=['index', 'time', 'RxIn.Density', 'mask'], header=None)

df = df[df['mask'].isna()].drop(['mask'], axis=1)

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

您可以只筛选出不需要的行(选中):

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')