質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

1回答

608閲覧

文字列の昇順に対応して数値も移動する(初めての質問です)

Elly_1451

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/01/21 06:00

文字列(e)と数字(c)が一対として入っているデータフレームで文字列を左から昇順にしてそれに対応する数字も一緒に合わせたデータフレームが欲しいと思っています。
e1, e2, e3, e4の要素を昇順にしてそれに対応したc1, c2, c3, c4の要素を格納する感じです。

e1 c1 e2 c2 e3 c3 e4 c4
0 a 10 b 15 c 20 d 5
1 d 3 c 15 a 6 b 21

import pandas as pd
df = pd.DataFrame([['a', 10, 'b', 15, 'c', 20, 'd', 5], ['d', 3, 'c', 15, 'a', 6, 'b', 21],], columns = ['e1', 'c1', 'e2', 'c2', 'e3', 'c3', 'e4', 'c4' ])
df

試したこと

文字列のみの昇順まではできたのですがその隣の数値をどうやって連動するかがわかりません。

だいぶはまって考えているので教えていただけるとすごく嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2021/01/21 06:42 編集

行の並べ替えは出来たんですよね。であれば自動的に「文字列を左から昇順にしてそれに対応する数字も一緒に」出来ているはずなんですが。何が出来て何が出来ていなくて何が分からないのかさっぱり分かりません。
quickquip

2021/01/21 06:50 編集

タイトルの不要な情報(初めての質問です)はノイズでしかないので消しましょう。印象が悪いです。 同様にタイトルの「文字列の昇順に対応して数値も移動する」も困っている事なのかやりたい事なのか、本文を読んでみるまでわからないです。 本文のコードも「今できていること」が隠されているように思います。
plasticgrammer

2021/01/21 06:56

文字列でソートを行ったコードも掲載してください。 その際、コードの挿入(<code>ボタン)により、pythonコードが適切な書式で表示されるよう修正をお願いします。
takutakuya

2021/01/21 07:14

マルチポストは嫌われるよ。
guest

回答1

0

こういうのでいいですか。

python

1>>> import pandas as pd 2>>> df = pd.DataFrame([['a', 10, 'b', 15, 'c', 0, 'd', 5], 3... ['a', 9, 'a', 11, 'c', 20, 'k', 7], 4... ['g', 3, 'c', 5, 'a', 16, 'b', 19], 5... ['g', 1, 'c', 13, 'b', 3, 'm', 23], 6... ['f', 5, 'e', 9, 'd', 6, 'a', 18],], 7... columns = ['e1', 'c1', 'e2', 'c2', 'e3', 'c3', 'e4', 'c4' ]) 8>>> df_s = df.sort_values(['e1', 'e2', 'e3', 'e4']) 9>>> print(df_s) 10 e1 c1 e2 c2 e3 c3 e4 c4 111 a 9 a 11 c 20 k 7 120 a 10 b 15 c 0 d 5 134 f 5 e 9 d 6 a 18 142 g 3 c 5 a 16 b 19 153 g 1 c 13 b 3 m 23

投稿2021/01/21 07:29

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Elly_1451

2021/01/21 07:46

ご回答ありがとうございます! ちょっと言葉足らずだったみたいで,各行について横方向にeの昇順にしてそれと対のcも一緒に動かしたかったんです。 各e, cをdictにして,lambdaでソートすることで解決しそうです!
ppaul

2021/01/21 07:53

pandasは関係ないというか、pandasを使うとかえって難しいですね。 一般的に言うと、dictはソートできないのですが、どうやるつもりなのでしょう?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問