前提
表題の質問が分かりにくいかと思いますが、申し訳ありません。
pandas データフレームの行のソートで、最初の条件でソートした後、最初のソートの条件を保って、次の条件でソートする方法を教えていただきたいです。
該当のソースコード
python
1下記dfを、df2のように、col2、col3、col4に「X」があるものを上になるようにソートしました。 2 3df = pd.DataFrame([['A',2,'X',1],['A',2,1,1],['C','X',1,1],['B','X',1,1],['C',6,1,1],['C',1,'X',1],['B',1,1,'X']], columns=['col1','col2','col3','col4']) 4 5 col1 col2 col3 col4 60 A 2 X 1 71 A 2 1 1 82 C X 1 1 93 B X 1 1 104 C 6 1 1 115 C 1 X 1 126 B 1 1 X 13 14上記を下のようにしてソート(Xを含む行を上になるようにするため) 15id_df = df.apply(lambda x: ~x.str.contains('X').any(), axis=1).argsort() 16df2 = df.iloc[id_df].reset_index(drop=True) 17 18 col1 col2 col3 col4 190 A 2 X 1 201 C X 1 1 212 B X 1 1 223 C 1 X 1 234 B 1 1 X 245 A 2 1 1 256 C 6 1 1 26 27上記の後で、下記のように、col2、col3、col4に「X」があるものを上になるようにソートを残して、 28col1 で再度ソートしたいです。 29 30 col1 col2 col3 col4 310 A 2 X 1 321 B X 1 1 332 B 1 1 X 343 C X 1 1 354 C 1 X 1 365 A 2 1 1 376 C 6 1 1 38
試したこと
sort_values()はいろいろ試しましたが、ダメでした。
良い方法を知っているかたがおられましたら教えてください。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/23 03:01