我有一个数据集,其中三次显示图片,并为每个演示文稿进行测量。前瞻性地我想对每张图片的值进行标准化(基于3次重复 - 所以3个数字)并对类别进行ANOVA:第一次演示,第二次演示,第三次演示(适用于所有图片)。然而,在我做到这一点之前,我必须重新组织我的数据,以便我可以根据图片名称和重复次数轻松访问数据。
我想转换一个如下所示的pandas数据框:
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(),但显然他们甚至没有模糊地做我想要的东西 - 任何想法?
答案 0 :(得分:2)
如果您有DataFrame df
,则可以将image name
和measurement id
字段设置为索引然后排序。这将按照您的要求订购数据。
df2 = df.set_index("pic_name", "meas_id").sort()
groupby
和pivot
适用于对数据组执行聚合,或者当您需要针对各个组执行特定操作时。 stack
和unstack
帮助重塑数据,但将索引移至cols,反之亦然。