0

我有一个数据集,其中图片展示了 3 次,并且每次展示都进行了测量。预期我想对每张图片的值进行标准化(基于 3 次重复 - 所以 3 个数字)并在类别上运行 ANOVA:第一次演示、第二次演示、第三次演示(适用于所有图片)。然而,在我开始之前,我必须重新组织我的数据,以便我可以轻松访问数据 - 基于图片名称和重复次数。

我想转换一个看起来像这样的熊猫数据框:

viola.jpg          0.61  1.968234      1
vlasta.jpg         0.79  1.836025      2
zelmira.jpg        0.76  1.955471      3
viola.jpg          0.71  1.968234      4
vlasta.jpg         0.89  1.836025      5
zelmira.jpg        0.76  1.955471      6
viola.jpg          0.31  1.968234      7
vlasta.jpg         0.79  1.836025      8
zelmira.jpg        0.26  1.955471      9

对于一个看起来像这样的:

viola.jpg   1   0.61    1.968234        1
            2   0.71    1.968234        4
            3   0.31    1.968234        7
vlasta.jpg  1   0.79    1.836025        2
            2   0.89    1.836025        5
            3   0.79    1.836025        8
zelmira.jpg 1   0.76    1.955471        3
            2   0.76    1.955471        6
            3   0.26    1.955471        9

我曾尝试以各种组合使用 df.groupby()、df.pivot 和 df.stack(),但显然他们甚至没有模糊地做我正在寻找的事情 - 有什么想法吗?

4

1 回答 1

2

如果你有一个 DataFrame df,你可以将你的image namemeasurement id字段设置为索引然后排序。这将按照您的意愿对数据进行排序。

df2 = df.set_index("pic_name", "meas_id").sort()

groupby并且pivot适用于对数据组执行聚合,或者当您需要对各个组执行特定操作时。 stackunstack帮助重塑您的数据,但将索引移动到 cols,反之亦然。

于 2013-04-09T15:46:45.427 回答