1

我想在以下问题上获得您的帮助:

我进行了两次心理学实验,并从我的受试者中检索了反应时间。所有这些数据都提交到数据帧中的各种 .xlsx 文件(每个实验一个文件),并使用 Python 创建了一个包含所有这些文件的单个 .xlsx 文件(通过 .append)我的主文件的索引是主题 ID从1开始。

我现在遇到的问题是我有 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 文件中的索引确实是主题。一切正常,只是元素的顺序!

4

1 回答 1

0

我意识到那'subject'不是你的索引。所以这应该可以解决您的问题:

df.set_index('subject', inplace=True)
df.sort_index(inplace=True)
于 2016-11-16T22:03:48.140 回答