gpt4 book ai didi

python - 组内的 Pandas 排序导致重复索引

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:08 25 4
gpt4 key购买 nike

我有一个格式如下的 pandas DataFrame:

           C1        C2
A 0 1.764052 0.400157
1 0.978738 2.240893
2 1.867558 -0.977278
3 0.950088 -0.151357
4 -0.103219 0.410599
C 0 0.144044 1.454274
1 0.761038 0.121675
2 0.443863 0.333674
3 1.494079 -0.205158
4 0.313068 -0.854096

它是从这段代码生成的:

import pandas as pd
import numpy as np
idx = pd.MultiIndex.from_product([['A','C'],range(5)])
np.random.seed(0)
df = pd.DataFrame(index=idx, data = np.random.randn(len(idx), 2), columns=['C1','C2'])

我想按 C1 列分别对每个组(第一个索引级别)进行排序,所以我使用 groupby 函数:

df.groupby(level=0).apply(lambda x: x.sort_values('C1'))

我得到了结果:

             C1        C2
A A 4 -0.103219 0.410599
3 0.950088 -0.151357
1 0.978738 2.240893
0 1.764052 0.400157
2 1.867558 -0.977278
C C 0 0.144044 1.454274
4 0.313068 -0.854096
2 0.443863 0.333674
1 0.761038 0.121675
3 1.494079 -0.205158

为什么第一层是重复的?是否有更好的方法对每个组内的数据进行排序?

最佳答案

您需要将参数 group_keys=False 添加到 groupby :

a = df.groupby(level=0, group_keys=False).apply(lambda x: x.sort_values('C1'))
print (a)
C1 C2
A 4 -0.103219 0.410599
3 0.950088 -0.151357
1 0.978738 2.240893
0 1.764052 0.400157
2 1.867558 -0.977278
C 0 0.144044 1.454274
4 0.313068 -0.854096
2 0.443863 0.333674
1 0.761038 0.121675
3 1.494079 -0.205158

关于python - 组内的 Pandas 排序导致重复索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40408366/

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