私は、次の形式でパンダのデータフレームを持っています:
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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加