与熊猫数据帧的natsort

时间:2016-11-16 21:23:38

标签: python pandas dataframe natsort

我想就以下问题提供帮助:

我已经进行了两次心理学实验,并且已经从我的受试者那里找到了反应时间。所有这些数据都提交到数据框中的各种.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文件中的索引确实是主题。一切正常,它只是元素的顺序!

1 个答案:

答案 0 :(得分:0)

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

df.set_index('subject', inplace=True)
df.sort_index(inplace=True)