以下の手順でできます。
- df["set"] で列 set を Series で取得する。
 
- Series.map(len) で列 set の各要素数を表す Series を作成する。
 
- Series.argsort() でソート後のインデックスを取得する。
 
- argsort は昇順ソートなので、iloc[::-1] で降順ソートした結果にする。
 
- df.iloc[sorted_idx] で元の DataFrame のソートした結果を取得する。
 
python
1import pandas as pd
2
3data = [[1, set("A")], [2, set(["B", "C"])], [3, set(["A", "B", "C"])]]
4columns = ["number", "set"]
5df = pd.DataFrame(data, columns=columns)
6print(df)
7#    number        set
8# 0       1        {A}
9# 1       2     {C, B}
10# 2       3  {C, A, B}
11
12sorted_idx = df["set"].map(len).argsort().iloc[::-1]
13df = df.iloc[sorted_idx]
14print(df)
15#    number        set
16# 2       3  {C, A, B}
17# 1       2     {C, B}
18# 0       1        {A}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/31 07:22