我想就以下问题提供帮助:
我已经进行了两次心理学实验,并且已经从我的受试者那里找到了反应时间。所有这些数据都提交到数据框中的各种.xlsx文件(每个实验一个文件),并且使用Python我创建了一个包含所有这些文件的.xlsx文件(通过.append) 我的主文件的索引是从1开始的主题ID。
我现在遇到的问题是我有12个科目,Python似乎没有遵循自然排序规则......我所拥有的是主题10,11,12来自主题1 - 9(其中我检索数据的方式)。 我以这种方式使用了natsort:
MASTER_DF_FLAT.index = natsorted(MASTER_DF_FLAT.index)
MASTER_DF_FV.index = natsorted(MASTER_DF_FV.index)
这解决了索引的问题,但行上的数据不会遵循新的顺序(在excel上你可以“扩展选择”并且你可以逃脱它)。知道如何解决这个问题吗?
编辑:以下是10个主题的数据格式:
subject block trial condition RT
10 1 1 1 0,677044666
10 1 2 12 0,556960872
10 1 3 2 0,51685685
10 1 4 5 0,766190078
以下是来自主题1的数据:
subject block trial condition RT
1 1 1 1 0,677044666
1 1 2 12 0,556960872
1 1 3 2 0,51685685
1 1 4 5 0,766190078
正如您所看到的,RT没有改变(其他值也没有改变)
感谢您的帮助!
EDIT1:这是我保存文件的方式:
我这样做:)这是我的代码:
for f in files:
data = os.path.join(data_dir,f)
df = pd.read_excel(data)
df.set_index('subject', inplace = True)
concatenated = pd.concat([block, trial, condition, RT, SOA, acc, ISI], axis=1)
if 'FV' not in f:
flatDFs.append(concatenated)
else:
fvDFs.append(concatenated)
MASTER_DF_FLAT = pd.concat(flatDFs)
writerFlat = pd.ExcelWriter('MASTER_FILE_FLAT.xlsx')
MASTER_DF_FLAT.to_excel(writerFlat,'Sheet1')
writerFlat.save()
正如您所看到的,我的.xlsx文件中的索引确实是主题。一切正常,它只是元素的顺序!
答案 0 :(得分:0)
我意识到'subject'
不是你的索引。所以这应该可以解决你的问题:
df.set_index('subject', inplace=True)
df.sort_index(inplace=True)