我有一个样本 data ( Data_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**, ::]
在第三列的新数据框中。这是sample final data file that I want 格式化后 ( Data-format_I_want_after_formatting.txt
)。所以我想要以下 -
- 要删除的空行(或行)
- 要删除的所有其他标题行仅保留顶部标题并将第三列标题更改为
"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')
关于python - 删除python中pandas中重复标题或字符串相同列和空行的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51907963/