前提・実現したいこと
Python初心者です。データフレームを対象に、条件分岐で処理を行うコードが書きたいと思っています。
具体例で申しますと、友達の情報をまとめたデータフレームがあったとして、名前列に「木村」という要素を含む行があれば該当行の情報を出力し、そうでなければ「見当たりません」と出力するコードが書きたいと考えています。
発生している問題・エラーメッセージ
現在、以下のようなエラーが出ています。
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-34-96abc5ee0ad9> in <module> 8 df = pd.DataFrame(data = friends) 9 ---> 10 if df[df['person'] == '木村']: 11 print(df[df['person'] == '木村']) 12 else: ~\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self) 1477 def __nonzero__(self): 1478 raise ValueError( -> 1479 f"The truth value of a {type(self).__name__} is ambiguous. " 1480 "Use a.empty, a.bool(), a.item(), a.any() or a.all()." 1481 ) ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
該当のソースコード
Python3
1import pandas as pd 2 3#友達情報をまとめたデータフレーム 4friends = dict(number = [1,2,3,4,5], 5 area = ['東京','愛知','神奈川','沖縄','北海道'], 6 person = ['木村','田中','横山','橋本','鈴木']) 7 8df = pd.DataFrame(data = friends) 9 10#df['person']列に「木村」があれば行の情報を出力し、なければ「見当たりません」を出力 11if df[df['person'] == '木村']: 12 print(df[df['person'] == '木村']) 13else: 14 print('見当たりません')
試したこと
エラーメッセージからif文の条件指定がおかしいと考え、この部分に「any()」をつけるなどを試してみましたが、同様のエラーメッセージが出ました。自力では解決できなかったため、お力添えいただけると大変うれしいです。
補足情報(FW/ツールのバージョンなど)
Pythonのバージョンは3.7.3、JupyterNotebook6.0.0でコードを書いています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/11 10:12