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

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

新規登録して質問してみよう
ただいま回答率
85.46%
データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

pandas

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

Q&A

解決済

2回答

738閲覧

Pandasで値に対応した列を抽出する方法について

kokomi

総合スコア2

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

pandas

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

0グッド

2クリップ

投稿2021/05/15 16:48

前提・実現したいこと

pandasにて下記データフレームがあるとします。

ID,Name,faq,fav1,fav2,fav3,answer 1,山田,fav2,猫,鳥,, 2,佐藤,fav1,米,パン,, 3,田中,fav1,テニス,サッカー,バスケ

answer列に下記条件で値を入れたいのですが、
どのようにすればよいかご教示いただけないでしょうか。

・条件
3列目の値に記載されている列名をanswerに入れる
ただし、もしfav3に値が含まれている場合はfav3を入れないといけない。

イメージとしては下記となります。

ID,Name,faq,fav1,fav2,fav3,answer 1,山田,fav2,猫,鳥,,鳥 2,佐藤,fav1,米,パン,,米 3,田中,fav1,テニス,サッカー,バスケ,バスケ

恐れ入りますがよろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

おはようございます。

問題文読ませていただきました。

こんな感じでしょうか?ご確認のほど、よろしくお願いいたします。????‍♂️

Python

1import pandas as pd 2 3df = pd.read_csv('./sample.csv').fillna({'answer': ''}) 4 5for index, row in df.iterrows(): 6 faq = row['faq'] 7 if faq == 'fav3': 8 df.at[index, 'answer'] = 'fav3' 9 else: 10 df.at[index, 'answer'] = row[faq] 11print(df)

<参考>
pandasでcsv/tsvファイル読み込み
Pandasでnan値を削除、穴埋めするfillna、dropnaの使い方

投稿2021/05/15 22:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kokomi

2021/05/15 22:54

おはようございます。 ご回答ありがとうございます! 考えすぎて頭がぐるぐるしてしまいましたが、頂いた内容でスッキリしました。 思ったアウトプットが出ることを確認いたしました。 また、参考状もつけていただき重ねてお礼申し上げます????‍♂️
退会済みユーザー

退会済みユーザー

2021/05/16 00:19

いえいえ、こちらこそご丁寧にありがとうございます。 意外とpandas操作難しいですよね〜。 また困ったことがありましたら、気軽にご相談ください〜。
guest

0

pandasの基本的な行、列操作は分かっているものとして回答します。

難しく考えず、与えられた条件をif文で素直に実装すれば良いかと思います。

条件は、

  1. 3列目の値に記載されている列名をanswerに入れる
  2. ただし、もしfav3に値が含まれている場合はfav3を入れないといけない。

となっていますが条件としては2が優先なので、先に2の条件でif文を書き、elifで順に

  • faqがfav1だったら、answerにfav1列の内容を代入
  • faqがfav2だったら、answerにfav2列の内容を代入

と書けばよいでしょう。

投稿2021/05/15 17:30

hope_mucci

総合スコア4447

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

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

kokomi

2021/05/15 22:57

ありがとうございます! Psndasの機能という部分で、変な方向に考えすぎてしまいました???? 頂いた回答にてすっきりいたしました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問