我正在处理由eyelink生成的数据。csv(从asc转换而来)基本上是一个大的顺序列表,即不创建列,因此,例如一行将具有“start_trial 1”,下一行将具有x和y坐标,接下来的N行也将在到达“PreBeep1_1st_Sketchpad”行和最终的“start_trial 2”行之前。在
我想知道是否有人对如何操作这些“堆叠”数据并将其转换为长格式数据有什么建议?在
以下是从csv中提取数据时的外观:MSG 12892743 start_trial 1 SCNB
12892743 757.0 361.7 5916.0 ... SCNB
MSG 12892744 PreBeep1_1st_Sketchpad SCNB
12892744 756.7 361.7 5920.0 ... SCNB
12892745 756.1 362.2 5924.0 ... SCNB
MSG 12892746 order of frames: SCNB
12892746 755.8 362.3 5928.0 ... SCNB
12892747 756.7 362.3 5927.0 ... SCNB
MSG 12892748 crosshair SCNB
12892748 757.8 361.8 5928.0 ... SCNB
12892749 758.4 361.8 5930.0 ... SCNB
MSG 12892750 sketchpad SCNB
12892750 758.1 361.7 5934.0 ... SCNB
12892751 758.3 361.7 5938.0 ... SCNB
MSG 12892752 sketchpad SCNB
12892752 759.1 361.9 5948.0 ... SCNB
12892753 760.4 362.7 5956.0 ... SCNB
MSG 12892754 sketchpad SCNB
12892754 761.7 363.5 5964.0 ... SCNB
12892755 763.9 364.0 5966.0 ... SCNB
MSG 12892756 buffer1 SCNB
12892756 765.6 364.1 5970.0 ... SCNB
12892757 766.2 364.3 5972.0 ... SCNB
MSG 12892758 Diode1 SCNB
12892758 765.2 364.3 5973.0 ... SCNB
12892759 764.1 364.5 5964.0 ... SCNB
12892760 763.9 364.7 5955.0 ... SCNB
理想情况下,我希望有单独的专栏:
^{pr2}$
如果有帮助,分隔符将\t放在csv文件中。在
可以看出,数据是按从上到下的顺序逐行写入的,而不是按我想要的方式组织成列。在
“…”也是实际值。在
关于将包含帧ID的列,如“start_trial”和“PreBeep1_1st_Sketchpad”,我希望在列中重复该帧的名称,直到遇到新的帧为止。在
任何帮助或建议将不胜感激。在
编辑:输出应如下所示:Trial ID Frame ID X-CoOr Y-CoOr Time
SCNB Start_Trial 757.0 361.7 5916.0
SCNB PreBeep1_1st_Sketchpad 756.7 361.7 5920.0
SCNB PreBeep1_1st_Sketchpad 756.1 362.2 5924.0
感谢您抽出时间阅读。在
编辑:
以下是我使用的代码:file2 = open('P1E2E_Both_New_trial_data.csv', 'rb')
Long_Format = open('P1E2E_Long_Format.csv', 'w')
writer1 = csv.writer(Long_Format, delimiter = '\t')
#First create column headings
columns = ["Trial ID"] + ['Frame ID'] + ['X-CoOr'] + ['Y-CoOr'] + ['Time']
writer1.writerow(columns)
reader1 = csv.reader(file2, delimiter = '\t')
for row in reader1:
# if statement here to skip blank lines
if len(row) > 1:
if 'start_trial' in row[1]:
label = [row[3]] + ['start_trial']
writer1.writerow(label)
file2.close() #
Long_Format.close()
上述输出为:Trial ID Frame ID X-CoOr Y-CoOr Time
SCNB start_trial
RCL start_trial
SCR start_trial
。。。等等。在
我的问题在于我不知道从这里该怎么办。我的方法即使有效,也会非常低效。我不知道如何告诉python继续读取if语句中标签“Start_Trial”后面的行,以及如何将第[2]行和第[3]行中的x和y CoOr值写入到该标签后面的相应列中。有道理吗?在