gpt4 book ai didi

python - 在 Pandas 中使用多索引数据帧进行高级平均

转载 作者:行者123 更新时间:2023-11-28 19:21:03 25 4
gpt4 key购买 nike

在这个多索引数据框中,

               c1        c2        c3
major minor
a 1 -1.202766 -0.502679 1.915304
2 0.097658 0.604051 -0.497243
3 -1.285027 -1.200143 0.087209
d 3 -0.231444 1.518543 2.139600
4 -1.336436 -0.299769 -0.600134
5 -0.873389 1.949733 -0.757263
a 1 -0.222766 -2.302679 0.615304
2 1.047648 1.304051 -1.497243
3 -1.285027 -1.000143 0.087209
d 3 -0.631464 1.318543 0.139600
4 -0.316436 -0.193749 -1.500134
5 -0.693689 0.449753 -1.347263

我想得到重复的主要指数的平均值,也就是说,像这样

            c1        c2        c3
major minor
a 1 -1.202766 -0.502679 1.915304
2 0.097658 0.604051 -0.497243
3 -1.285027 -1.200143 0.087209
d 3 -0.231444 1.518543 2.139600
4 -1.336436 -0.299769 -0.600134
5 -0.873389 1.949733 -0.757263

其中的值为平均值。显然 df.groupby(level='major').mean() 在这里不起作用,因为次要索引也被平均为一个值。如何进行?

最佳答案

如评论中所述,df.groupby(level=['major', 'minor']).mean().dropna() 将在两个轴上创建有条件的平均值。

跟进评论中的讨论

对于具有非唯一列名的不良数据结构情况,以下 hack 有效:

LL = [pd.DataFrame(pd.DataFrame(df[i]).mean(axis=1), columns=[i]) for i in df.columns.unique()]
pd.concat(LL, axis=1)

pd.DataFrame(df[i]) 确保 df[i] 是一个 DataFrame,以防列名不是复制品。剩下的就是收集数据帧然后堆叠它们。

更好的数据结构

假设您收集了不同的数据集:

 id c1 c2 c1 c2
0 1 1 2 2
1 3 4 5 6

保存它的更好方法是使用样本标识符

 sample id c1 c2 
0 0 1 1
1 0 2 2
0 1 3 4
1 1 5 6

现在,您已正确识别多层数据,您可以在其中创建不同样本的平均值。

关于python - 在 Pandas 中使用多索引数据帧进行高级平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24954117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com