删除重复的标题行或字符串在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”
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')