【发布时间】:2016-07-28 10:05:46
【问题描述】:
这里显示的数据文件是仪器导出的测量记录。
我上传了here,有兴趣的可以下载。
背景
Sample
RECORD-1
FID1, FID2, front_temperature, laser, laserlow, pressure, mode
-925 284 1452 315 143 16653 He -28500
-924 281 1462 322 136 16641 He -28628
-920 281 1455 311 139 16649 He -28756
-923 279 1454 312 139 16636 He -28884
......
Sample
RECORD-2
FID1, FID2, front_temperature, laser, laserlow, pressure, mode
-925 284 1452 315 143 16653 He -28500
......
......
一般情况下,不同的样品按照检测程序的顺序有多个记录。这些样本的数据记录都是相同的格式。
我的尝试
如果数据文件中只有一个样本(*.txt 格式),我可以将数据文件排列成 pandas。 Dataframe,然后我可以在 Python 中使用更多的分析过程来处理数据。
我的代码在这里显示:
# Whole datafile with several samples record inside
with open("record.txt") as f:
mylist = f.read().splitlines()
## The record for each sample length in 803 lines
lines = mylist[0:803]
### The sample_name was extract from the third line
sample_name = lines[2]
### For each sample, the measure record was saved in several aspects,
### which were regarded as some columns here
columns = lines[22].split()
### Generate an empty columns for saving data record later.
df = {columns[0][:-1]:[],columns[1][:-1]:[],columns[2][:-1]:[],columns[3][:-1]:[],columns[4][:-1]:[],
columns[5][:-1]:[],columns[6][:-1]:[],} #### I only though about this dumb method for now
## Data extracting
### the valid data record of sample 1 was from line 23
for i in range(0, len(lines[23:]),1):
for j in range(0, len(columns),1):
df[columns[j][:-1]].append(lines[23+i].split()[j])
pd.DataFrame(df)
结果如下所示:
我的目标
从上面的代码中,我可以处理一个样本的数据文件。但是当记录文本中表示有几个样本时。我找不到有效处理它的线索。
这是我的目标的插图。生成用于保存所有样本记录的数据框字典。
任何建议将不胜感激!
【问题讨论】:
-
有什么建议吗?你已经计划好了,有什么问题?
-
我想生成一个 dataframe.like 变量,其中包含每个样本的所有数据帧。这可能吗?例如,
Dataset是一个全局数据集。当我调用Dataset[0]时,Dataframe(Sample1) 会出现。 -
使用数据框字典或数据框列表作为样本数据集的元素。
-
感谢您的回复。那么,将数据帧映射到字符串列表是要走的路吗?当我们想要将数据框与字符串链接时如何实现?
-
显然这取决于您在下游做什么,但您可以考虑将所有样本放在一个数据框中,并添加与样本编号、样本名称等对应的附加列或索引您想要的其他数据。您可以使用
pd.concat构建数据框,然后使用query或索引 (.loc) 获取子集。这样一来,您就不必一次只处理一个样本。 Pandas 可以很好地处理这些大型数据集。但当然,这一切都取决于你接下来要做什么。
标签: python arrays pandas dataframe