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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

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

Q&A

解決済

1回答

202閲覧

Pandasでリストを使ったソート方法を実現したいです

1mzmk

総合スコア42

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

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

0グッド

0クリップ

投稿2022/05/25 08:28

以下のようなDataFrameがあり、列に"Keyword"と"Campaign"があります。

Keyword Campaign 0 トラクター 住まい、インテリア 1 トラクター 花、園芸 2 office コンピュータ 3 ps5 住まい、インテリア 4 日本刀 ホビー、カルチャー ... ... ... 24718 1/12 完成品 おもちゃ、ゲーム 24719 1/12 タミヤ おもちゃ、ゲーム _2201テスト(RSA一本化) 24720 1/12 タミヤ おもちゃ、ゲーム 24721 007 ジェームズボンド 映画、ビデオ 24722 スカパーチューナー 家電、カメラ 24723 rows × 2 columns

このDataFrameをソートしたいと考えており、
ソート方法としては、"keyword"カラムの値を以下のdf_kwで出力されるリストの順番にしたいと考えています。
そのようなことは可能なのでしょうか?

print(df_kw) ['1円', 'トラクター', 'iphone', 'シンウルトラマン', 'メダカ', 'office', 'スナップオン', 'ipad', '発電機', 'onkyo', 'ps5', '日本刀', '韓国ドラマ', 'コンプレッサー', 'ジャンク', 'ポケモンカード', 'ノートパソコン', 'スピーカー', 'ダークファンタズマ', 'ユンボ', 'ロレックス', '除雪機', '自転車', 'キャンピングカー', 'ana 株主優待券', 'ポータブル電源', 'フォークリフト', 'エルメス', '耕運機', '高圧洗浄機', '絵画', 's2000', 'ハコスカ', 'メダカ 卵', '草刈り機', 'bmw', '電動自転車', 'アガベ', 'ガレージキット', 'ドローン', 'visvim', 'マキタ', 'トミカ']

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

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

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

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

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

melian

2022/05/25 08:54

例えば、「1/12 完成品」などは df_kw には含まれていないのですが、それらはどうしますか?
1mzmk

2022/05/25 09:24

df_kwのリストの要素が多く、要素数を省略した形で記載させていただいています。 なので、無視していただいて構いません。 よろしくお願いします。
guest

回答1

0

ベストアンサー

python

1import pandas as pd 2import io 3import numpy as np 4 5pd.set_option('display.unicode.east_asian_width', True) 6 7csv_data = ''' 8Keyword,Campaign 91/12 完成品,おもちゃ、ゲーム 10日本刀,ホビー、カルチャー 11トラクター,住まい、インテリア 12office,コンピュータ 131/12 タミヤ,おもちゃ、ゲーム _2201テスト(RSA一本化) 141/12 タミヤ,おもちゃ、ゲーム 15トラクター,花、園芸 16007 ジェームズボンド,映画、ビデオ 17スカパーチューナー,家電、カメラ 18ps5,住まい、インテリア 19''' 20df = pd.read_csv(io.StringIO(csv_data)) 21 22df_kw = ['1円', 'トラクター', 'iphone', 'シンウルトラマン', 'メダカ', 'office', 'スナップオン', 'ipad', '発電機', 'onkyo', 'ps5', '日本刀', '韓国ドラマ', 'コンプレッサー', 'ジャンク', 'ポケモンカード', 'ノートパソコン', 'スピーカー', 'ダークファンタズマ', 'ユンボ', 'ロレックス', '除雪機', '自転車', 'キャンピングカー', 'ana 株主優待券', 'ポータブル電源', 'フォークリフト', 'エルメス', '耕運機', '高圧洗浄機', '絵画', 's2000', 'ハコスカ', 'メダカ 卵', '草刈り機', 'bmw', '電動自転車', 'アガベ', 'ガレージキット', 'ドローン', 'visvim', 'マキタ', 'トミカ'] 23 24# 25dfx = df.sort_values( 26 'Keyword', 27 key=lambda x: [df_kw.index(i) if i in df_kw else np.nan for i in x]) 28 29print(dfx.to_markdown(index=False))
KeywordCampaign
トラクター住まい、インテリア
トラクター花、園芸
officeコンピュータ
ps5住まい、インテリア
日本刀ホビー、カルチャー
1/12 完成品おもちゃ、ゲーム
1/12 タミヤおもちゃ、ゲーム _2201テスト(RSA一本化)
1/12 タミヤおもちゃ、ゲーム
007 ジェームズボンド映画、ビデオ
スカパーチューナー家電、カメラ

投稿2022/05/25 09:26

melian

総合スコア19798

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

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

1mzmk

2022/05/25 13:02

ご回答ありがとうございます。 無事解決することができました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問