当前位置: 首页 > 知识库问答 >
问题:

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

谢承
2023-03-14

我有一个样本数据(Data_sample_truncated.txt),我从一个大数据截断。它有3个字段-索引,时间和RxIn。密度[**x**,::]"这里我使用x作为整数,因为x可以在任何范围内变化。在这个数据中它是0-15。3列字段的组合是唯一的。对于不同的"Index"字段,"Time"和"RxIn"。密度[**x**,::]"可以相同也可以不同。对于每个新的"Index"值,数据都有一个空行和几乎相似的列标题,除了"RxIn。密度[**x**,::]"其中x在达到新的"Index"值时增加。我从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(蟒蛇)其中Python 3.6.4 64位嵌入。

共有2个答案

赫连方伟
2023-03-14

试试这个:

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')
柯苗宣
2023-03-14

你可以过滤掉你不想要的行(检查一下):

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')
 类似资料:
  • 问题内容: 我有像这样的字符串“ aaaabbbccccaaddddcfggghhhh”,我想删除重复的字符,得到像这样的字符串“ abcadcfgh”。 一个简单的实现是: 使用正则表达式是否可能有更好的实现? 问题答案: 你可以这样做: 正则表达式使用反向引用和捕获组。 正常的正则表达式是,但是您必须在Java中使用另一个反斜杠来使反斜杠转义。 如果您想要重复的字符数: 演示版

  • 我需要编写一个静态方法,该方法将作为参数,并返回一个新的。例如,如果我将“Maaaakkee”作为输入,它将返回“make”。我已经尝试了下面的代码,但它似乎没有显示最后一个字符。下面是我的代码:

  • 问题内容: 我想从python中的字符串列表中删除所有空字符串。 我的想法如下: 有没有更多的Python方式可以做到这一点? 问题答案: 我会用: Python 3从返回一个迭代器,因此应包装在对的调用中

  • 如果输入“abcde”和输入“abc”=“de” 我想知道如何使用jQuery创建代码。

  • 本文向大家介绍如何从Python的字符串列表中删除空字符串?,包括了如何从Python的字符串列表中删除空字符串?的使用技巧和注意事项,需要的朋友参考一下 您可以使用过滤器过滤掉空字符串。filter的第一个参数是lambda,它将告诉您字符串是否为空。您可以将此lambda传递为None,bool,len或检查字符串是否为空的函数。您可以通过以下几种方式进行检查: 请单击下面的链接以查看带有简单

  • 问题内容: 我正在制作一个基于Java中字符串处理的程序,其中需要从字符串数组中删除重复的字符串。在此程序中,所有字符串的大小均相同。 “数组”是一个字符串数组,其中包含许多字符串,其中两个字符串彼此相似。因此,使用下面的代码,必须删除重复的字符串,但是不能删除。 如何删除重复的字符串? 我正在使用以下代码。 问题答案: 这会工作 或者只使用a 而不是数组。