前提・実現したいこと
Python pandasでDataFrameに対して、ある列を参照してその値をもとに新規の列に値を追加するというコードを書こうと思っています。(ある列の値が1 or 2なら高卒, 5なら大卒...etc)
「各列の値を参照して操作する」という作業だったので、apply()とlamda式で実装を試みたのですが、返り値が全部Noneになってしまい実装できませんでした。
import pandas as pd import numpy as np df = pd.DataFrame( { "Edu": ["1","2","3","4","5","1","3"] } ) def categoryedu(x): if (x["Edu"] == 1) or (x["Edu"] == 2): x["EduGroup"] = "高卒" if (x["Edu"] == 3) or (x["Edu"] == 4): x["EduGroup"] = "専門短大卒" if (x["Edu"] == 5): x["EduGroup"] = "大卒" df["EduGroup"] = df.apply(lambda x: categoryedu(x), axis=1) """ Edu EduGroup 0 1 None 1 2 None 2 3 None 3 4 None 4 5 None 5 1 None 6 3 None """
試したこと
参考にしたサイト(https://note.nkmk.me/python-pandas-map-applymap-apply/)
for文で上から下まで一行ずつ取り出して、条件分岐させた後にconcatする方法も思いついたのですが、冗長になるので可能であれば、applyで実装したいです。
補足情報(FW/ツールのバージョンなど)
Python3.7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/29 08:54